如何拥有一个包含两个按钮列的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。有办法吗?如果有,那是什么?
而不是
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仅适用于选择按钮。