如何将GridView中每行的每个单元格值放入变量中

时间:2017-01-20 22:04:36

标签: c# asp.net .net gridview

我在stackoverflow解决方案中尝试了一些方法。但这些并没有得到很好的实施。大多数情况下,我为变量和/例如"对象引用设置为null /为空而没有设置为对象的实例。"

我的GridView:

<asp:GridView runat="server" ID="TestReportGridView" AutoGenerateColumns="false" Width="370px">
    <Columns>
        <asp:TemplateField HeaderText="ID" Visible="false">
            <ItemTemplate>
               <%#Eval("TestId") %>
            </ItemTemplate>
        </asp:TemplateField>

        <asp:TemplateField HeaderText="Sr">
            <ItemTemplate>
                <%#Container.DataItemIndex+1 %>
            </ItemTemplate>
        </asp:TemplateField>

        <asp:TemplateField HeaderText="Test">
            <ItemTemplate>
                <%#Eval("TestName") %>
            </ItemTemplate>
        </asp:TemplateField>

        <asp:TemplateField HeaderText="Fee">
            <ItemTemplate>
                <%#Eval("Fee") %>
            </ItemTemplate>
        </asp:TemplateField>
    </Columns>
    <HeaderStyle HorizontalAlign="Left" />
</asp:GridView>

当我点击“保存”按钮时,我想将单元格文本放在每行的4个不同变量中:

protected void SaveButton_Click(object sender, EventArgs e)
{
    string patient = PatientNameTextBox.Text;
    string birthDate = BirthDateTextBox.Text;
    string mobile = MobileNoTextBox.Text;

    int rows = TestReportGridView.Rows.Count;

    foreach (GridViewRow row in TestReportGridView.Rows)
    {
        Label test = (Label)row.FindControl("Test");
        string testName = test.Text;

        //Label lblQuantity = (Label)row.FindControl("Quantity");
        //string Quantity = lblQuantity.Text;
    }
}

Image of the UI

我在ItemTemplate中添加了一个标签。是否正确添加标签

<asp:TemplateField HeaderText="Test">
                    <ItemTemplate>
                        <asp:Label ID="Test" runat="server" ><%#Eval("TestName") %></asp:Label>
                    </ItemTemplate>
                </asp:TemplateField>

1 个答案:

答案 0 :(得分:0)

您需要在Label中添加ItemTemplate控件。以下示例:

<ItemTemplate>
    <asp:Label ID="Test" runat="server" Text='<%# Eval("TestName") %>' />
</ItemTemplate>

直接在<%#Eval("TestId") %>内添加ItemTemplate不会自动添加任何控件来搜索后面的代码。