문제

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;
    }
}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top