我需要从网格视图中使用控制ID来使用Trigger。
我的代码在这里:
<asp:GridView ID="gvDetails" CssClass="table table-striped table-bordered datatables dataTable" DataKeyNames="folder_path" CellPadding="5" runat="server" AutoGenerateColumns="false" Width="100%">
<Columns>
<asp:TemplateField HeaderText="Select">
<ItemTemplate>
<asp:CheckBox ID="chkSelect" runat="server" />
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="attachment_name" HeaderText="Attachment" />
<asp:TemplateField>
<ItemTemplate>
<asp:LinkButton ID="lnkDownload" Text="Download" runat="server" OnClick="DownloadFile"></asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderStyle-CssClass="hideGridColumn" ItemStyle-CssClass="hideGridColumn">
<ItemTemplate>
<asp:HiddenField ID="hdnAttach_Id" Value='<%#(Eval("attachment_id").ToString())%>' runat="server" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
<HeaderStyle BackColor="#2FBDF1" Font-Bold="true" />
</asp:GridView>
我需要代码......
<Triggers>
<asp:PostBackTrigger ControlID="lnkDownload" />
</Triggers>
如何从gridview获取“lnkDownload”id?
例外:
答案 0 :(得分:1)
您需要将每个LinkButton
注册为PostBackTrigger
。在GridView
中绑定每一行后,您需要搜索LinkButton
并通过代码注册,如下所示:
protected void gvDetails_RowDataBound(object sender, GridViewRowEventArgs e)
{
LinkButton lb = e.Row.FindControl("lnkDownload") as LinkButton;
ScriptManager.GetCurrent(this).RegisterPostBackControl(lb);
}
需要在RowDataBound
事件中调用此方法。
您可以使用findcontrol
方法
foreach(GridViewRow row in gvDetails.Rows)
{
if(row.RowType == DataControlRowType.DataRow)
{
LinkButton linkButton = (LinkButton )row.FindControl("lnkDownload");
//Your other code
}
}
答案 1 :(得分:0)
我最近也遇到过这个问题。 您可以通过执行e.row.findcontrol(“NameOfControl”)来查找控件。
由于我不完全知道您打算做什么,因此您可以通过查找控件来检索ClientID。然后,您可以通过说Button.ClientID来指定按钮的ID。这将显示ContentHolder1_gridview_0_button_0。
要添加属性,可以执行button.Attributes.Add(“attribute”,“#”+ button.ClientID);
我修复了以下代码,以便在按钮中添加以下属性。这样我就可以单击按钮并复制文本框。 例如:
protected void gvListInventoryPassword_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
HtmlButton buttonPass= (HtmlButton)e.Row.FindControl("buttonPass");
TextBox txtBox= (TextBox)e.Row.FindControl("txtBox");
buttonPass.Attributes.Add("data-clipboard-target", "#" + txtBox.ClientID);
}
}//End of gvListInventoryPassword_RowDataBound function