2

第一个问题:

我有一个带有小吃和价格列表的 gridview 'gvSnacks'。gridview 的第一列是带有按钮“btnAdd”的模板字段。

单击其中一个添加按钮时,我希望它将该行值分配给一个整数,以便我可以从该行中检索其他数据。

这就是我所拥有的,但我遇到了死胡同。

protected void btnAdd_Click(object sender, EventArgs e)
{
    int intRow = gvSnacks.SelectedRow.RowIndex;

    string strDescription = gvSnacks.Rows[intRow].Cells[2].Text;
    string strPrice = gvSnacks.Rows[intRow].Cells[3].Text;
}

感谢任何帮助!

4

1 回答 1

4

您可能需要使用 RowCommand 事件:

public event GridViewCommandEventHandler RowCommand

这是此事件的 MSDN 链接

该按钮必须具有 CommandName 属性,您可以将行的值放在命令参数中:

 void ContactsGridView_RowCommand(Object sender, GridViewCommandEventArgs e)
  {
    // If multiple buttons are used in a GridView control, use the
    // CommandName property to determine which button was clicked.
    if(e.CommandName=="Add")
    {
      // Convert the row index stored in the CommandArgument
      // property to an Integer.
      int index = Convert.ToInt32(e.CommandArgument);

      // Retrieve the row that contains the button clicked 
      // by the user from the Rows collection.
      GridViewRow row = ContactsGridView.Rows[index];

      // Create a new ListItem object for the contact in the row.     
      ListItem item = new ListItem();
      item.Text = Server.HtmlDecode(row.Cells[2].Text) + " " +
        Server.HtmlDecode(row.Cells[3].Text);

      // If the contact is not already in the ListBox, add the ListItem 
      // object to the Items collection of the ListBox control. 
      if (!ContactsListBox.Items.Contains(item))
      {
        ContactsListBox.Items.Add(item);
      }
    }
  }    
于 2012-12-06T22:03:16.007 回答