1

GridView我已经从代码隐藏在我的 .aspx中动态创建。我在其中插入了一个 sql 表GridView。然后我又添加了一个按钮栏。这是代码:

ButtonField bf = new ButtonField();
bf.Text = "Details";
bf.ButtonType = ButtonType.Button;

DataTable table = new DataTable();
table.Load(reader);
GridView gv = new GridView();
gv.Columns.Add(bf);
gv.DataSource = table;
gv.DataBind();

现在我想MouseClickEvent在这个 ButtonField 上添加一个,但是没有属性Clickor MouseClick。有没有办法做到这一点?

4

3 回答 3

5

对于您指定的ButtonField内部:GridViewCommandName

bf.CommandName = "MyCommand";

并像这样访问它:

void gv_RowCommand(Object sender, GridViewCommandEventArgs e)
{
    if (e.CommandName == "MyCommand")
    {
    }
}

您可能会发现它很有用:ButtonField.CommandName Property

于 2013-09-14T20:45:23.600 回答
2

当涉及到每一行都有一个操作(如编辑按钮或详细信息)的网格视图时,我个人喜欢执行以下操作:

  1. 在 GridView 之后有一个隐藏按钮,这个按钮有一个 onclick 事件(比方说OnDetailsButtonClick)。所以这个按钮就是提交的按钮。
  2. 创建一个隐藏字段,当单击行中的操作时将填充该字段,以便服务器端代码将获取执行操作的 rowId
  3. 使 gridview 中的每个按钮都具有 OnClientClick (假设调用了 javascript 函数goToDetails(entityId)),因此 javascript 函数将如下所示:
function goToDetails(entityId){
    $("#HiddenEntityId").val(entityId);
    $("#Button").click()
}

从后面的代码中,您可以从隐藏字段中获取行/实体 ID:

private void OnDetailsButton_Click(object sender, EventArgs e){
   string entityId = HiddenEntityId.Value;
   //now you can do whatever you like
}
于 2013-09-14T15:10:10.900 回答
0

您必须使用“Gridview.RowCommand”句柄来为 ButtonField 中的按钮启用自定义脚本。

IE

1) 将“CommandName”属性添加到您的按钮字段,此示例假定 CommandName = "Delete"

2)

    Protected Sub GridView1_buttonsclicked(sender As Object, e As GridViewCommandEventArgs) Handles GridView1.RowCommand

    If e.CommandName = "Delete" Then
        'Delete clicked with index of " + e.CommandArgument.ToString

        'Your code here, using the e.commandargument as the gridview index, then select column values using that index.

    End If

End Sub
于 2015-09-15T14:28:24.253 回答