【问题标题】:GridView from CodeBehind select row and postback来自 CodeBehind 的 GridView 选择行和回发
【发布时间】:2011-03-07 21:23:08
【问题描述】:

我必须在 C# CodeBehind 中创建一个GridView 100%。我让它选择一行并使用此代码发回:

    void dataGrid_ItemCreated(object sender, DataGridItemEventArgs e)
    {
        if (e.Item.ItemType == ListItemType.AlternatingItem ||
            e.Item.ItemType == ListItemType.Item)
        {
            e.Item.Attributes.Add("onmouseover",
                   "this.style.backgroundColor='beige';this.style.cursor='pointer'");
            e.Item.Attributes.Add("onmouseout",
                   "this.style.backgroundColor='#FFFFFF';");
            e.Item.Attributes.Add("onclick", "javascript:__doPostBack" +
                   "('_ctl0$DataGrid1$_ctl" +
                   ((Convert.ToInt32(e.Item.ItemIndex.ToString())) + 2) +
                   "$_ctl0','')");
        }
    }

这确实会回发,但我如何获取用户点击的行的 ID?

【问题讨论】:

    标签: c# asp.net gridview postback


    【解决方案1】:
    void dataGrid_ItemCreated(object sender, DataGridItemEventArgs e)
        {
            if(e.Item.ItemType == ListItemType.Item)
            {
                var item = e.Item.DataItem;  // <- entity object that's bound, like person
                var itemIndex = e.Item.ItemIndex; // <- index
            }
    
        }
    

    【讨论】:

      【解决方案2】:

      您可以将第二个参数中的参数传递给__doPostBack

      __doPostBack(controlname, yourid);
      

      所以在这里填写:

      e.Item.Attributes.Add("onclick", "javascript:__doPostBack" +
          "('_ctl0$DataGrid1$_ctl" +
         ((Convert.ToInt32(e.Item.ItemIndex.ToString())) + 2) + 
         "$_ctl0','PUT YOUR VALUE HERE')");
      

      然后你可以通过事件参数访问它。

      【讨论】:

      • 我将“Hello”作为我的值,单击该行,然后在 Page_Load 上查看 EventArgs e,但它是空的。
      猜你喜欢
      • 2011-12-02
      • 1970-01-01
      • 1970-01-01
      • 2013-02-21
      • 2014-02-28
      • 1970-01-01
      • 2013-01-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多