C# 从Javascript引发DataGrid ItemCommand事件
我正在使用DataGrid显示从数据库检索到的数据,我想知道是否可以使用Javascript引发网格的ItemCommand事件 下面的代码片段大致显示了我在针对DIV removeProductButton的onclick处理程序中尝试执行的操作。我不想使用asp:Button或asp:LinkButton,因为当前DIV的外观是使用CSS控制的,无论用于创建可点击触发器的HTML元素类型如何,代码都应该工作,以允许将来的外观自定义C# 从Javascript引发DataGrid ItemCommand事件,c#,javascript,asp.net,.net,datagrid,C#,Javascript,Asp.net,.net,Datagrid,我正在使用DataGrid显示从数据库检索到的数据,我想知道是否可以使用Javascript引发网格的ItemCommand事件 下面的代码片段大致显示了我在针对DIV removeProductButton的onclick处理程序中尝试执行的操作。我不想使用asp:Button或asp:LinkButton,因为当前DIV的外观是使用CSS控制的,无论用于创建可点击触发器的HTML元素类型如何,代码都应该工作,以允许将来的外观自定义 <asp:datagrid id="itemGrid"
<asp:datagrid id="itemGrid" runat="server" cellPadding="0" AutoGenerateColumns="False" GridLines="None">
<Columns>
<asp:TemplateColumn>
<ItemTemplate>
<div class="items">
<div class="product_title"><%#Eval("ItemID")%>. <%#Eval("ItemDescription")%></div>
<div class="product_image">
<img id="productImage_<%#Eval("ItemID")%>" src="<%#Eval("ThumbnailURL")%>" />
</div>
<div class="buttons">
<div id="removeProductButton" class="buttonStandard" onclick="Do Something HERE...">Remove</div>
</div>
</div>
</ItemTemplate>
</asp:TemplateColumn>
</Columns>
</asp:datagrid>
任何帮助都将不胜感激。使用所需的命令名向ItemTemplate添加一个隐藏按钮:
<asp:Button
ID="removeProductButton_hidden"
runat="server"
style="display:none;"
CommandName="YourCommandName"
Text="" />
因此,整个网格定义如下所示:
public void grd_ItemDataBound(object sender, DataGridItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
HtmlGenericControl removeProductButton = (HtmlGenericControl)e.Item.FindControl("removeProductButton");
Button removeProductButtonHidden = (Button)e.Item.FindControl("removeProductButton_hidden");
removeProductButton.Attributes.Add("onclick", ClientScript.GetPostBackEventReference(removeProductButtonHidden, ""));
}
}
<asp:DataGrid
runat="server"
ID="itemGrid"
OnItemCommand="itemGrid_ItemCommand"
OnItemDataBound="itemGrid_ItemDataBound">
<Columns>
<asp:TemplateColumn>
<ItemTemplate>
<asp:Button
ID="removeProductButton_hidden"
runat="server"
style="display:none;"
CommandName="YourCommandName"
Text="" />
<div class="items">
<div class="buttons">
<div ID="removeProductButton" runat="server" class="buttonStandard">Remove</div>
</div>
</div>
</ItemTemplate>
</asp:TemplateColumn>
</Columns>
</asp:DataGrid>
去除
感谢Kevev22的帮助,它起到了很好的作用,但我决定咬紧牙关,用ASP按钮替换DIV,以保持简单。
public void grd_ItemDataBound(object sender, DataGridItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
HtmlGenericControl removeProductButton = (HtmlGenericControl)e.Item.FindControl("removeProductButton");
Button removeProductButtonHidden = (Button)e.Item.FindControl("removeProductButton_hidden");
removeProductButton.Attributes.Add("onclick", ClientScript.GetPostBackEventReference(removeProductButtonHidden, ""));
}
}
<asp:DataGrid
runat="server"
ID="itemGrid"
OnItemCommand="itemGrid_ItemCommand"
OnItemDataBound="itemGrid_ItemDataBound">
<Columns>
<asp:TemplateColumn>
<ItemTemplate>
<asp:Button
ID="removeProductButton_hidden"
runat="server"
style="display:none;"
CommandName="YourCommandName"
Text="" />
<div class="items">
<div class="buttons">
<div ID="removeProductButton" runat="server" class="buttonStandard">Remove</div>
</div>
</div>
</ItemTemplate>
</asp:TemplateColumn>
</Columns>
</asp:DataGrid>