今天我有几个问题,我是ASP和C#的新手,所以我需要一些帮助,问题是下一个。 (我会尝试尽可能最具体)
我已经创建了一个从我的数据库中填充的GridView,在我的GridView中我添加了一列按钮(详细信息),这里有问题。当我点击一个按钮时,我需要在浏览器中打开一个新窗口(如何从C#中执行此操作,或者可以在客户端使用javascrip?)并且在我需要显示数据库中的详细信息后,首先我需要从按钮的行获取ID,即GridView中的列ID,那么如何在单击按钮的情况下获取ID列的行值?
这是我的ASP GridView代码
<asp:GridView ID="GridView1" runat="server"
AutoGenerateColumns="false"
AllowPaging="true" CellPadding="3"
OnPageIndexChanging="grdData_PageIndexChanging" PagerSettings-Position="Top"
PagerStyle-ForeColor="Orange"
PageSize="10">
<Columns>
<asp:BoundField DataField="id" HeaderText="ID" />
<asp:BoundField DataField="request_type" HeaderText="RequestType"/>
<asp:BoundField DataField="priority" HeaderText="Priority" />
<asp:BoundField DataField="modality" HeaderText="Modality" />
<asp:BoundField DataField="name" HeaderText="Name" />
<asp:BoundField DataField="start_date" HeaderText="Start Date"/>
<asp:BoundField DataField="end_date" HeaderText="End Date" />
<asp:BoundField DataField="hour" HeaderText="Start Hour" />
<asp:BoundField DataField="requester" HeaderText="Requester Name" />
<asp:TemplateField>
<ItemTemplate>
<asp:Button ID="Details" runat="server"
CommandArgument="<%# ((GridViewRow) Container).RowIndex %>"
Text="Details" CssClass="botonformulario"/>
</ItemTemplate>
</asp:TemplateField>
</Columns>
我在后面的代码中尝试这个,但我认为不起作用。
protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
{
int index = Convert.ToInt32(e.CommandArgument);
GridViewRow row = GridView1.Rows[index];
//my code here..
}
我尝试从此页面做同样的事情。
http://www.dotnetbull.com/2013/05/how-to-handle-click-event-of-linkbutton.html
并且也来自这个,
https://msdn.microsoft.com/en-us/library/bb907626.aspx
我真的不知道自己做错了什么,当我点击按钮时没有任何反应。 我尝试过断点,但我注意到断点永远不会发生
非常感谢您的时间,任何评论都会有所帮助。
答案 0 :(得分:0)
你有GridView1_RowCommand
处理程序,但它没有绑定在你发布的html中。您可能需要将事件GridView.RowCommand绑定到GridView
<asp:GridView ID="GridView1" runat="server" OnRowCommand="GridView1_RowCommand"
AutoGenerateColumns="false"
AllowPaging="true" CellPadding="3"
OnPageIndexChanging="grdData_PageIndexChanging" PagerSettings-Position="Top"
PagerStyle-ForeColor="Orange"
PageSize="10">
一旦您触发了事件,您需要确定使用CommandName
<asp:Button ID="Details" runat="server" CommandName="cmdDetails"
CommandArgument="<%# ((GridViewRow) Container).RowIndex %>"
Text="Details" CssClass="botonformulario"/>
答案 1 :(得分:0)
<asp:GridView ID="GridView1" runat="server"
AutoGenerateColumns="false"
AllowPaging="true" CellPadding="3"
OnPageIndexChanging="grdData_PageIndexChanging" PagerSettings-Position="Top"
PagerStyle-ForeColor="Orange"
PageSize="10">
<Columns>
<asp:BoundField DataField="id" HeaderText="ID" />
<asp:BoundField DataField="request_type" HeaderText="RequestType"/>
<asp:BoundField DataField="priority" HeaderText="Priority" />
<asp:BoundField DataField="modality" HeaderText="Modality" />
<asp:BoundField DataField="name" HeaderText="Name" />
<asp:BoundField DataField="start_date" HeaderText="Start Date"/>
<asp:BoundField DataField="end_date" HeaderText="End Date" />
<asp:BoundField DataField="hour" HeaderText="Start Hour" />
<asp:BoundField DataField="requester" HeaderText="Requester Name" />
<asp:TemplateField>
<ItemTemplate>
<asp:Button ID="Details" runat="server"
CommandArgument="<%# ((GridViewRow) Container).RowIndex %>"
Text="Details" OnClick="Details_Click" CommandName='<%# Eval("id")%>' CssClass="botonformulario"/>
</ItemTemplate>
</asp:TemplateField>
protected void Details_Click(object sender, EventArgs e)
{
Button btn=(Button)sender;
Response.Redirect("Details.aspx?id="+btn.CommandName);
}