如何拥有一个包含两个按钮列的DataGrid

本文关键字:DataGrid 按钮 何拥 有一个 包含两 | 更新日期: 2023-09-27 18:25:41

我目前有一个ASP DataGrid,其中有一个ButtonColumn,如下所示:-

<asp:DataGrid id="gradesGrid"
              AutoGenerateColumns="true"
              runat="server"
              OnSelectedIndexChanged="GradesDataGridSelectedCallback">
    <Columns>
        <asp:ButtonColumn HeaderText=""
                          ButtonType="LinkButton"
                          Text="Graph"
                          CommandName="Select">
        </asp:ButtonColumn>
    </Columns>
</asp:DataGrid>

这是完美的;当点击按钮列时,就会调用GradesDataGridSelectedCallback函数,一切都非常棒。我现在需要向这个数据网格添加第二个按钮列,以执行与网格项相关的不同功能。我添加了额外的代码:-

<asp:ButtonColumn HeaderText=""
                  ButtonType="LinkButton"
                  Text="Display"
                  CommandName="NewFunction">
</asp:ButtonColumn>

这按预期显示,但单击第二个按钮(尽管它会导致返回),不会调用GradesDataGridSelectedCallback函数。问题是,如何将第二个ButtonColumn连接到C#代码绑定中的特定函数?

或者,如果我指定按钮列为:-

<asp:ButtonColumn HeaderText=""
                  ButtonType="LinkButton"
                  Text="Display"
                  CommandName="Select">
</asp:ButtonColumn>

然后GradesDataGridSelectedCallback确实被调用了,但我看不出有任何方法可以确定点击了哪个ButtonColumn。有办法吗?如果有,那是什么?

如何拥有一个包含两个按钮列的DataGrid

而不是

OnSelectedIndexChanged="GradesDataGridSelectedCallback"

使用

OnItemCommand ="GradesDataGridSelectedCallback"

并将您的GradesDataGridSelectedCallback定义为

Protected void GradesDataGridSelectedCallback(Object source , DataGridCommandEventArgs e)
End Sub

选中e.CommandName将指示单击了哪个按钮。

使用ItemCommand事件,而不是OnSelectedIndexChanged它将为每个按钮触发。

<asp:DataGrid ID="dtGrg" runat="server" AutoGenerateColumns="true" 
                            onitemcommand="dtGrg_ItemCommand">
                            <Columns>
                                <asp:ButtonColumn HeaderText="" ButtonType="LinkButton"  Text="Graph"  CommandName="Select">
                                </asp:ButtonColumn>
                                <asp:ButtonColumn HeaderText="" ButtonType="LinkButton" Text="Display" CommandName="NewFunction" >
                                </asp:ButtonColumn>
                            </Columns>
                        </asp:DataGrid>

protected void dtGrg_ItemCommand(object source, DataGridCommandEventArgs e)
        {
            if (e.CommandName == "NewFunction")
            { 
             //Your Code Here :
            }
             if (e.CommandName == "Select")
            {
                //Your Code Here :
            }
        }

OnSelectedIndexChanged仅适用于选择按钮。