0

asp.netに関しては、私は初心者です。私は昨日から質問への答えを見つけようとしています:asp.netを使用してグリッドビューの行番号をコマンド引数として渡すにはどうすればよいですか?

私は多くの方法/方法を試しましたが、どれも機能しませんでした(コマンドビハインドではコマンド引数がnullです)ので、javascript関数を試してみるのが適切だと思いました(javascriptを使用するよりも短くて明確な方法がある場合は教えてください)。

関数は次のとおりです。

     <script type = "text/javascript">
   function GetSelectedRow(lnk) {
       var row = lnk.parentNode.parentNode;
       var rowIndex = row.rowIndex - 1;
       alert("RowIndex: " + rowIndex);
       return rowIndex;
   }
</script>

そしてまた:

    <ItemTemplate>
                <asp:Label ID="labelStatus" 
                           runat="server" 
                           Text='<%#Bind("Statut")%>'
                           CommandArgument='<%#"Eval(GetSelectedRow(lnk))"%>'>
                </asp:Label>
   </ItemTemplate>

行番号が必要な理由は、編集中の行を指定できるようにするために、OnRowCommandイベントハンドラーにあります。(myGridView.EditIndex = Convert.Int16(e.CommandArgument.ToString());)。

前もって感謝します :)

4

2 に答える 2

1

RowCreatedハンドラーのサーバー側でそれを行うことができます:

protected void GridView1_RowCreated(Object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        // Find the control which fires the command
        LinkButton button = (LinkButton)e.Row.Cells[0].FindControl("LinkButton1");

        button.CommandArgument = e.Row.RowIndex.ToString();
    }
}

LinkButton1クリックするとイベントがトリガーされ、:でRowCommandこれにアクセスできます。CommandArgumenthandler

protected void GridView1_RowCommand(Object sender, GridViewCommandEventArgs e)
{
    int rowIndex;
    if (int.TryParse(e.CommandArgument as string, out rowIndex))
    {
        // Do something with row index
    }
}
于 2012-07-26T08:49:28.220 に答える
0

GridView と OnRowCommand に関する完全な例がここにあります

http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.gridview.onrowcommand.aspx

于 2012-07-26T08:46:29.013 に答える