asp.net和C#
这里我有gridview控件的列
当用户点击任一按钮时,我需要将CaseID,CaseworkerID,EventDate和Code的值传递给存储过程
但是如何将多个参数传递给我的onclick方法????
<columns>
<asp:BoundField DataField="CaseID" HeaderText="CaseID" Visible = "False" />
<asp:BoundField DataField="caseworkerID" HeaderText="CwID" Visible = "False" />
<asp:BoundField DataField="CaseWorker" HeaderText="Case Worker" />
<asp:BoundField DataField="EventDate" HeaderText="Event Date" />
<asp:BoundField DataField="Code" HeaderText="Code" />
<asp:TemplateField HeaderText="ADD">
<ItemTemplate>
<asp:Button ID="AddUnit" runat="server" Text=" +1 " onserverclick="AddUnit_Click"/>
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="TotalUnits" HeaderText="Total Units" />
<asp:TemplateField HeaderText="DDT">
<ItemTemplate>
<asp:Button ID="DdtUnit" runat="server" Text=" -1 " onserverclick="DdtUnit_Click"/>
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="EventType" HeaderText="Event Type" />
<asp:BoundField DataField="UnitCost" HeaderText="Unit Cost" />
<asp:BoundField DataField="TotalCost" HeaderText="Total Cost"/>
编辑: 所以我现在有了这个
<ItemTemplate>
<asp:Button ID="AddUnit" runat="server" Text=" +1 "
CommandName="AddUnit"
CommandArgument='<%# Eval("CaseID")+ ";" + Eval("caseworkerID")+ ";" + Eval("EventDate")+ ";" + Eval("Code")%>'/>
</ItemTemplate>
这是一个好的开始
答案 0 :(得分:2)
首先对网格的所有按钮使用不同的命令名
protected void grid_RowCommand(object sender, GridViewCommandEventArgs e)
{
string city="";
if (e.CommandName == "btnname")
{
ImageButton imgbtn = (ImageButton)e.CommandSource;
GridViewRow rows = (GridViewRow)imgbtn.NamingContainer;
city = grid.Rows[rows.RowIndex].Cells[1].Text;
}
}
根据您的要求使用列的单元格id。和列ID从0开始。
任何查询都问我
答案 1 :(得分:1)
你要做的就是创建一个由特殊字符消除的命令参数。处理事件时,从事件(e)中拉出命令参数并将其拆分。 (正如utkarshs的答案所示,使用gridviews rowcommand事件,而不是onclick)
如果命令参数数据实际上包含您用于分隔符的相同字符,则可能会导致问题。但是只有一个建议(我们知道有些像productId那样有时不会包含管道(|))
编辑: 所以你的按钮应该像......
<asp:button CommandArgument='<%# Eval("someValue") + " | "
+ Eval("someOtherValue") + " | " %>'
CommandName="whatever" runat="server" text="FOO BAR" />
然后在您的网格ID为gridId
protected void gridId_RowCommand(object sender, GridViewCommandEventArgs e)
{
if (e.CommandName == "btnname")
{
string[] differentValues = e.CommandArgument.ToString().Split("|");
}
}