将网格视图与文本框绑定

本文关键字:绑定 文本 网格 视图 | 更新日期: 2023-09-27 18:25:36

在下面的代码中,我有一个会话值,我必须在其中传递到网格并绑定这些值。网格由文本框组成。如果会话值为2,则应该有两行文本框。我试过了,投掷指数超出了范围。请帮我解决这个问题。

int GoodsReceivedNoteID = (int)Session["GoodsReceivedNoteID"];
for (int iRow = 0; iRow < GoodsReceivedNoteID; iRow++)
{
    TextBox txtFreightCharges = (TextBox)gvGRN.Rows[iRow].Cells[6].FindControl("txtFreightCharges");
    TextBox txtLoadingCost = (TextBox)gvGRN.Rows[iRow].Cells[6].FindControl("txtLoadingCost");
    TextBox txtUnloadingCost = (TextBox)gvGRN.Rows[iRow].Cells[6].FindControl("txtUnloadingCost");
    TextBox txtInsuranseCost = (TextBox)gvGRN.Rows[iRow].Cells[6].FindControl("txtInsuranseCost");
    TextBox txtOtherExpenses = (TextBox)gvGRN.Rows[iRow].Cells[6].FindControl("txtOtherExpenses");
}

将网格视图与文本框绑定

不要使用Rows[index].Cells[6].FindControl,单元格不是GridViewRow的TemplateField中控件的NamingContainer,而是行本身。我也不理解您的会话值和网格中的行数之间的关系。这更简单可读:
foreach(GridViewRow row in gvGRN.Rows)
{
    TextBox txtFreightCharges = (TextBox)row.FindControl("txtFreightCharges");
    TextBox txtLoadingCost = (TextBox)row.FindControl("txtLoadingCost");
    TextBox txtUnloadingCost = (TextBox)row.FindControl("txtUnloadingCost");
    TextBox txtInsuranseCost = (TextBox)row.FindControl("txtInsuranseCost");
    TextBox txtOtherExpenses = (TextBox)row.FindControl("txtOtherExpenses");
}

如果您只想取GoodsReceivedNoteID-行(这听起来是错误的,因为ID不是计数器):

for(int i = 0; i < GoodsReceivedNoteID; i++))
{
    GridViewRow row = gvGRN.Rows[i];
    TextBox txtFreightCharges = (TextBox)row.FindControl("txtFreightCharges");
    // ...
}