【问题标题】:Not getting values in datatable while Updating gridview row更新gridview行时未在数据表中获取值
【发布时间】:2016-03-25 06:44:08
【问题描述】:

我在gridview 中有 5 行,我正在尝试更新其中的一行,在更新时,我写了以下代码:-

protected void GrdProspective1_UpdateCommand(object sender, Obout.Grid.GridRecordEventArgs e)
{
    if (Session["grdEdit"] != null)
    {
        DtCombo = (DataTable)Session["grdEdit"];
    }
    else
    {
        BindDatatable();
    }

    DataRow[] dataProsUpdate = DtCombo.Select("SR_NO = " + e.Record["SR_NO"]);

    dataProsUpdate[0]["PARTY_NAME"] = e.Record["PARTY_NAME"];
    dataProsUpdate[0]["FLAT_NO"] = e.Record["FLAT_NO"];
    dataProsUpdate[0]["LEASE_NUM"] = e.Record["LEASE_NUM"];
    dataProsUpdate[0]["ACTION"] = e.Record["ACTION"];
    dataProsUpdate[0]["NO_OF_DAYS"] = e.Record["NO_OF_DAYS"];
    dataProsUpdate[0]["REMARKS"] = e.Record["REMARKS"];

    GrdProspective1.DataSource = DtCombo;
    GrdProspective1.DataBind();
    AddToViewState("GrdProspective1");
}

但在这方面,我遇到了错误

索引超出了数组的范围。

我很困惑为什么当gridview中有5行时数据表是空的

我的数据表代码:-

public void BindDatatable()
{
    DataSet ds = new DataSet();
    DataRow dr;

    DataColumn SR_NO;
    DataColumn PARTY_NAME;
    DataColumn FLAT_NO;
    DataColumn LEASE_NUM;
    DataColumn ACTION;
    DataColumn NO_OF_DAYS;
    DataColumn REMARKS;

    DtCombo = new DataTable();

    SR_NO = new DataColumn("SR_NO", typeof(Int32));
    PARTY_NAME = new DataColumn("PARTY_NAME", typeof(String));
    FLAT_NO = new DataColumn("FLAT_NO", typeof(Int32));
    LEASE_NUM = new DataColumn("LEASE_NUM", typeof(Int32));
    ACTION = new DataColumn("ACTION", typeof(String));
    NO_OF_DAYS = new DataColumn("NO_OF_DAYS", typeof(Int32));
    REMARKS = new DataColumn("REMARKS", typeof(String));

    DtCombo.Columns.Add(SR_NO);
    DtCombo.Columns.Add(PARTY_NAME);
    DtCombo.Columns.Add(FLAT_NO);
    DtCombo.Columns.Add(LEASE_NUM);
    DtCombo.Columns.Add(ACTION);
    DtCombo.Columns.Add(NO_OF_DAYS);
    DtCombo.Columns.Add(REMARKS);
}

【问题讨论】:

    标签: c# asp.net gridview datatable


    【解决方案1】:

    完整的解决方案:

    protected void GrdProspective1_UpdateCommand(object sender, Obout.Grid.GridRecordEventArgs e)
    {
        if (Session["grdEdit"] != null)
        {
            DtCombo = (DataTable)Session["grdEdit"];
        }
        else
        {
            return;
        }
    
        DataRow[] dataProsUpdate = DtCombo.Select("SR_NO = " + e.Record["SR_NO"]);
    
        dataProsUpdate[0]["PARTY_NAME"] = e.Record["PARTY_NAME"];
        dataProsUpdate[0]["FLAT_NO"] = e.Record["FLAT_NO"];
        dataProsUpdate[0]["LEASE_NUM"] = e.Record["LEASE_NUM"];
        dataProsUpdate[0]["ACTION"] = e.Record["ACTION"];
        dataProsUpdate[0]["NO_OF_DAYS"] = e.Record["NO_OF_DAYS"];
        dataProsUpdate[0]["REMARKS"] = e.Record["REMARKS"];
    
        GrdProspective1.DataSource = DtCombo;
        GrdProspective1.DataBind();
        AddToViewState("GrdProspective1");
    }
    
    public void DisplayGridEdit() 
    { 
    OracleCommand cmd = new OracleCommand("SELECT...", ObjPriCon); 
    
    DtCombo = new DataTable(); 
    OracleDataAdapter da = new OracleDataAdapter(cmd); 
    da.Fill(DtCombo); 
    
    GrdProspective1.DataSource = DtCombo; 
    GrdProspective1.DataBind(); 
    AddToViewState("GrdProspective1");
    }
    

    【讨论】:

    • 准确创建的位置。因为我不是在 page_load 上绑定网格,而是在某些事件上
    • 当你调用 BindDatatable();那么 DtCombo 将始终有 0 行。那是你的问题。
    • 伙计,您只需添加列 您还需要添加包含数据的行。
    • 你能告诉我如何添加吗?请
    • 好的,所以其余的将跟随row["SR_NO"] = 1; row["PARTY_NAME"] = 2; .....等等,对吗?
    猜你喜欢
    • 1970-01-01
    • 2013-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-07
    相关资源
    最近更新 更多