【问题标题】:Gridview: Get a value from cell of database data table where ID=rowEditIndex , how?Gridview:从 ID=rowEditIndex 的数据库数据表的单元格中获取一个值,如何?
【发布时间】:2012-03-27 15:47:01
【问题描述】:

在 GridView1 RowDataBound 上我怎样才能得到这样的东西:

SELECT * FROM tableName WHERE Column AND DataTableID=RowEditIndex.

我正在尝试从当前编辑行的 dataTable 中获取单元格的值。所以他需要从gridview的当前编辑行的datTable的某个单元格中获取值。

我需要正确的 sql 语句,并且我需要它在 rowDataBound gridview 中因为我那里有另一个代码。

谢谢

【问题讨论】:

    标签: c# asp.net sql


    【解决方案1】:

    您可以使用 GridView 上的数据键来实现这一点,如下所示:

    <asp:GridView ID="GridView1" runat="server" DataKeyNames="SomeID, SomeOtherColumn" OnRowDataBound="GridView1_RowDataBound" ...>
    

    在代码隐藏中:

    protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        int someID = (int)GridView1.DataKeys[e.Row.RowIndex]["SomeOtherColumn"];
    
        //do whatever you need to do with the value
    }
    

    编辑:下面是如何在RowUpdating 事件中访问数据键的示例:

    protected void TaskGridView_RowUpdating(object sender, GridViewUpdateEventArgs e)
    {
        var someValue = GridView1.DataKeys[e.RowIndex]["SomeOtherColumn"].ToString();
    }
    

    您还可以通过RowDataBound 事件中的DataItem 属性访问该值:

    int someID = (int)DataBinder.Eval(e.Row.DataItem, "SomeID");
    

    【讨论】:

    • item.rowindex 不存在 rowdatabound :(
    • 对不起,我更正了我的答案。应该是e.Row.RowIndexe.Row.DataItem,具体取决于您使用的解决方案。
    • 很好,所以使用该代码我得到了列的编辑 ID 行,现在,你能告诉我正确的语句是什么:SELECT * FROM tableName WHERE Column AND ID=someID" 正确吗?
    • 是否需要从RowDataBound事件中查询数据库?
    • 是的,所以如果当前编辑行的 ID == datatTable 行,我可以从中获取值。
    【解决方案2】:
    using System.Linq;
    
    ...
    ...
    
    
    var myValue = myDataTable.AsEnumerable().where (r=>r["MYColumn"].ToString()==RowEditIndex.ToString()).select(a=>a["MYColumn"].ToString())
    

    【讨论】:

    • hmm myDataTable 应该是什么?有没有机会让它容易理解? r->r ,numerable ,我没用过。谢谢
    猜你喜欢
    • 1970-01-01
    • 2015-03-03
    • 1970-01-01
    • 1970-01-01
    • 2017-12-28
    • 2013-05-19
    相关资源
    最近更新 更多