1

asp.net と C#

ここに、グリッドビュー コントロールの列があります

ユーザーがいずれかのボタンをクリックすると、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の回答が示すように、onclickではなくgridviews rowcommandイベントを使用してください)

これにより、コマンド引数データに区切り記号に使用したのと同じ文字が実際に含まれている場合、問題が発生する可能性があります。ただし、1 つの提案です (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 に答える