对于asp.net,我是初学者。我从昨天开始尝试找到问题的答案:如何使用asp.net将gridview的rownumber作为命令参数传递?
我尝试了很多方法/方法,但都没有用(命令代码在代码隐藏中是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());)。
提前谢谢你:)
答案 0 :(得分:0)
您可以在这里找到有关GridView和OnRowCommand
的完整示例http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.gridview.onrowcommand.aspx
答案 1 :(得分:0)
您可以在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
个活动,您可以在CommandArgument
中访问此handler
:
protected void GridView1_RowCommand(Object sender, GridViewCommandEventArgs e)
{
int rowIndex;
if (int.TryParse(e.CommandArgument as string, out rowIndex))
{
// Do something with row index
}
}