편집 가능한 Datagrid? 연발총?
문제
ASP.NET에 표시 할 항목 목록이 있습니다. 각 항목 (ROW)에는 3 개의 텍스트 상자가 있으므로 사용자는 해당 데이터 (배송 비용, 처리 비용, 가격)를보고 변경할 수 있습니다.
이것을 달성하는 "권장"방법은 무엇입니까? 리피터를 사용하면 Postback의 양식 값을 살펴보고 GridView 컨트롤을 사용하여 OnrowDatabound와 PostBack에서 다른 방법을 재정의해야한다고 가정합니다.
나는 둘 다 효과가있을 것이라고 확신하지만,이 상황에서 개발자가 무엇을 선택합니까?
해결책
과거에 한 일은 데이터가 바운드 gridview templatecolumns를 사용하는 것입니다.
<asp:GridView runat="server" ID="grdRoster" AutoGenerateColumns="false">
<Columns>
<asp:TemplateField HeaderText="First Name">
<ItemTemplate>
<asp:TextBox runat="server" ID="txtFirstName" Columns="10" Text='<%# Eval("RosterFirstName") %>' />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Middle Name">
<ItemTemplate>
<asp:TextBox runat="server" ID="txtMiddleName" Columns="10" Text='<%# Eval("RosterMiddleName") %>' />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Last Name">
<ItemTemplate>
<asp:TextBox runat="server" ID="txtLastName" Columns="10" Text='<%# Eval("RosterLastName") %>' />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
그런 다음 Postback (예 : "저장"버튼 클릭)에서 GridView의 행을 루프하고 텍스트 상자에서 값을 뽑을 수 있습니다.
foreach ( GridViewRow row in grdRoster.Rows )
{
if ( row.RowType == DataControlRowType.DataRow )
{
string firstName = ( ( TextBox ) row.FindControl( "txtRosterFirstName" ) ).Text;
string middleName = ( ( TextBox ) row.FindControl( "txtRosterMiddleName" ) ).Text;
string lastName = ( ( TextBox ) row.FindControl( "txtRosterLastName" ) ).Text;
}
}
제휴하지 않습니다 StackOverflow