访问GridView中的项目

时间:2011-04-08 14:31:03

标签: c# .net asp.net linq gridview

我有一个GridView,我通过C#通过LINQ更新它。我想访问GridView中的元素并将它们存储在变量中。然后我将这些变量传递给我的LINQ查询。

我应该如何访问GridView中的项目?这是我的代码:

protected void gvShowComm_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
    string productID = gvShowComm.DataKeys[e.RowIndex]["Product_ID"].ToString(); //Working!
    string planName = gvShowComm.DataKeys[e.RowIndex]["PlanName"].ToString(); //Working!
    string hiComm = gvShowComm.DataKeys[e.RowIndex]["HiCommissionOld"].ToString(); //Working!
    string lowComm = gvShowComm.DataKeys[e.RowIndex]["LowCommissionOld"].ToString(); //Working!

    gvShowComm.DataBind();
}

标记:

<asp:GridView runat="server" Height="233px" Width="602px" ID ="gvShowComm" 
    CellPadding="4" ForeColor="#333333" GridLines="None" OnRowEditing = "gvShowComm_RowEditing" 
    OnRowUpdating = "gvShowComm_RowUpdating" 
    OnRowCancelingEdit = "gvShowComm_RowCancelingEdit" DataKeyNames = "Product_ID, PlanName, HiCommissionOld, LowCommissionOld">       
    <Columns>
        <asp:CommandField ShowCancelButton="True" ShowEditButton="True" />
    </Columns>
</asp:GridView>

2 个答案:

答案 0 :(得分:2)

像Produce_ID这样的东西听起来像一个关键字段,如果是,你可以做

var keyValue =  gvShowComm.DataKeys[e.RowIndex].Value;
if(keyValue!=null)
int Product_ID = Convert.ToInt32(keyValue);

或者

您可以使用e.NewValues[]e.OldValues[]

答案 1 :(得分:1)

GridViewUpdateEventArgs上有属性,可让您访问特定行的KeysOldValuesNewValues个集合。

可以访问它:

protected void gvShowComm_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
    //Product_ID is a column that I am displaying in my GV!
    int Product_ID = Int32.Parse(e.Keys["Product_ID"]);

    Entity_Product_Point ev = new Entity_Product_Point();

    ev.MyDateTime = DateTime.Parse(e.NewValues["MyProp"]);

    // And so on...
}

但这很糟糕! ASP.Net可以使用其中一个可用的DataSource类为您完成工作。出于您的目的,您应该查看LinqDataSource

值得注意的是,尽管DataSource类可以很有用且很好,但它们还有很多魔力,而且你几乎可以抛弃使用任何可测试模式的可能性。 (见WebFormsMVP

如果这不是一个问题,那就去吧。但从长远来看,实现清晰的关注分离更好。在这种情况下,您需要围绕业务逻辑实现Facade包装,并使用ObjectDataSource

无论哪种方式,你最好还是在键/值对集合中手动查找值,然后将它们转换回适当的类型。

相关问题