1

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> 

这是一个好的开始

4

2 回答 2

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 开始。

任何问题问我

于 2013-02-15T14:09:10.323 回答
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("|");           
    }
}
于 2013-02-15T14:08:47.113 回答