简短:我可以以某种方式访问ID =“imgStackExample”
我尝试向用户提供视觉反馈(例如表格中的图标),它会抛出“名称在当前上下文中不存在”。我需要控制元素的ID来更改Visible prop或CssClass。
<asp:GridView
ID="GridExample"
runat="server"
<Columns>
<asp:TemplateField SortExpression="StackExample">
<HeaderTemplate>
<asp:LinkButton ID="lbtnStackExample" runat="server" Text="StackExample" OnClick="onChangeHandler" ></asp:LinkButton>
<asp:Image ID="imgStackExample" runat="server" ImageUrl="Images/330-sort-alpha-desc.svg"/>
<br />
<asp:TextBox ID="txtStackExample" runat="server" OnTextChanged="onChangeHandler" AutoPostBack="true"></asp:TextBox>
</HeaderTemplate>
<ItemTemplate>
<%#Eval("StackExample") %>
</ItemTemplate>
</asp:TemplateField>
这里是来自onChangeHandler的代码
if (sender is LinkButton)
{
LinkButton lBtn = (LinkButton)sender;
switch (lBtn.ID)
{
case "lbtnStackExample":
//some code
imgStackExample.Visible = true;//this line here is important
//some code
我无法在.cs文件中访问ID =“imgStackExample”。如果我使用imgStackExample.Visible = true;
,则会抛出错误。
由于
答案 0 :(得分:0)
您的问题不是很明确,但如果您需要处理来自GridView
的按钮点击,您可以使用RowCommand
并在那里提取您需要的索引参考图像控制。可以从MSDN
修改强>
您已更新问题,因此我更新了我的答案,但仍然可以从提供的链接中找到答案。 图像确实不存在于您尝试引用它的上下文中。为了引用gridview中的控件,您必须使用可以使用来自已知发件人的commandArgument传递的索引来查找它,在本例中为按钮。作为我提供的示例中的状态:
int index = Convert.ToInt32(e.CommandArgument);
// Retrieve the row that contains the button clicked
// by the user from the Rows collection.
GridViewRow row = ProductsGridView.Rows[index];
然后您可以访问GridView中的控件,例如
Label listPriceTextBox = (Label)row.FindControl("PriceLabel");
这当然假设您已将索引添加为按钮的命令参数,或者您可以从按钮的ID获取索引。
答案 1 :(得分:0)
访问templatefield
内的gridview
,请按照以下代码
foreach (GridViewRow row in grd.Rows)
{
var txt = row.FindControl("txtStackExample") as TextBox;
if (txt != null)
{
// do something with your textbox
}
}
针对event
使用button
gridview创建RowCommand event
。
protected void GridExample_RowCommand(object sender,GridViewCommandEventArgs e)
{
if (e.CommandName == "lbtnStackExample")
{
LinkButton lnkbtn = (LinkButton)e.CommandSource;
string Id= lnkbtn.CommandArgument;
// write link button click event code here
}
}