当前上下文中不存在名称“LinkButton4”??

mjtfzh 2007-01-07 10:33:03
错误提示:
当前上下文中不存在名称“LinkButton4”

行 17: protected void Page_Load(object sender, EventArgs e)
行 18: {
行 19: LinkButton4.Click += new EventHandler(DataList1_ItemCommand);//这一行是红色的
行 20: LinkButton5.Click += new EventHandler(DataList1_ItemCommand);}

.aspx部分代码

<asp:DataList ID="DataList1" runat="server" Width="275px" OnSelectedIndexChanged="DataList1_SelectedIndexChanged" DataKeyField="pro_id">
<ItemTemplate>


<table style="width: 174px">
<tr>
<td style="width: 70px"><asp:Image ID="Image3" runat="server" Width="100px" Height="100px" ImageUrl='<%# Eval("photo","pic_{0}.bmp") %>'></asp:Image>

</td>
<td style="width: 1987px">产品:<br>
单价:<br>
单位:<br>
<asp:LinkButton ID="LinkButton4" CommandName="category" runat="server" text="类别信息" /><br>
<asp:LinkButton ID="LinkButton5" CommandName="supplier" runat="server" text="供应商" />

</td>
<td><asp:LinkButton ID="LinkButton6" CommandName="select" runat="server" text='<%# Eval("pro_name") %>'/><br>
<%# Eval("price") %><br>
<%# Eval("unit") %>
</td>
</tr>





</table>

</ItemTemplate>
</asp:DataList>

.cs部分代码
protected void Page_Load(object sender, EventArgs e)
{
LinkButton4.Click += new EventHandler(DataList1_ItemCommand);
LinkButton5.Click += new EventHandler(DataList1_ItemCommand);
}
...全文
388 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
mjtfzh 2007-01-08
  • 打赏
  • 举报
回复
单击LinkButton4和LinkButton5怎么不执行DataList1_ItemCommand和DataList1_OnItemDataBound呢?只执行page_load.

我想单击LinkButton4和LinkButton5都执行DataList1_ItemCommand
是什么样的设计思路呢?

.aspx部分代码
<asp:DataList ID="DataList1" runat="server" Width="275px" OnSelectedIndexChanged="DataList1_SelectedIndexChanged" DataKeyField="pro_id">
<ItemTemplate>


<table style="width: 174px">
<tr>
<td style="width: 70px"><asp:Image ID="Image3" runat="server" Width="100px" Height="100px" ImageUrl='<%# Eval("photo","pic_{0}.bmp") %>'></asp:Image>

</td>
<td style="width: 1987px">产品:<br>
单价:<br>
单位:<br>
<asp:LinkButton ID="LinkButton4" CommandName="category" runat="server" text="类别信息" /><br>
<asp:LinkButton ID="LinkButton5" CommandName="supplier" runat="server" text="供应商" />

</td>
<td><asp:LinkButton ID="LinkButton6" CommandName="select" runat="server" text='<%# Eval("pro_name") %>'/><br>
<%# Eval("price") %><br>
<%# Eval("unit") %>
</td>
</tr>

</table>

</ItemTemplate>
</asp:DataList>

.cs部分代码
protected void Page_Load(object sender, EventArgs e)
{

string commstr = "select pro_id,pro_name,price,unit,number,photo from 产品表";
SqlConnection conn = new SqlConnection(connstr);
SqlCommand comm = new SqlCommand(commstr, conn);
conn.Open();
SqlDataReader dr1 = comm.ExecuteReader();
DataList1.DataSource = dr1;
DataList1.DataBind();
dr1.Close();
conn.Close();


}
protected void DataList1_ItemCommand(object sender, DataListCommandEventArgs e)
{
string commstr1 = "select a.pro_id,b.provider_string,c.class_string from 产品表 as a,供应资料 as b,产品类别 as c where pro_id='" + DataList1.DataKeys[e.Item.ItemIndex];
//DataList1.DataKeys[e.Item.ItemIndex] + "' and b.provider=a.provider and a.pro_class=c.class_string";
SqlConnection conn1 = new SqlConnection(connstr);
SqlCommand comm1 = new SqlCommand(commstr1, conn1);
conn1.Open();
SqlDataReader dr2 = comm1.ExecuteReader();
if (dr2.Read() == true)
{

switch (e.CommandName)
{

case "catagory": Label6.Text = dr2["class_string"].ToString(); break;
case "supplier": Label7.Text = dr2["provider_string"].ToString(); break;
}
}
}

protected void DataList1_OnItemDataBound(object sender,DataListItemEventArgs e)
{
LinkButton LinkButton4 = (LinkButton)e.Item.FindControl("LinkButton4");
LinkButton LinkButton5 = (LinkButton)e.Item.FindControl("LinkButton5");
LinkButton4.Click += new EventHandler(DataList1_ItemCommand);
LinkButton5.Click += new EventHandler(DataList1_ItemCommand);
}
bendan999999999 2007-01-08
  • 打赏
  • 举报
回复
可以设置linkButton4的CommandName,然后在ItemCommand,根据e.CommandName判断是不是linkButton4的CommandName,如果是就进行相应的操作
aaajedll 2007-01-08
  • 打赏
  • 举报
回复
1楼和3楼的正解,随便巩固知识!
diablo1003 2007-01-08
  • 打赏
  • 举报
回复
学习
mjtfzh 2007-01-08
  • 打赏
  • 举报
回复
明白,我试一下
yangyupeng521 2007-01-08
  • 打赏
  • 举报
回复
你需要在你的DataList的OnItemDataBound事件中,找到你的
{
LinkButton l4=(LinkButton)e.Item.FindControl("LinkButton4");
l4.Click += new EventHandler(DataList1_ItemCommand);
}
mjtfzh 2007-01-08
  • 打赏
  • 举报
回复
怎么访问LinkButton4控件啊?

将LinkButton4.Click += new EventHandler(DataList1_ItemCommand);
改成
DataList1.项模板.ItemTemplate.LinkButton4.Click += new EventHandler(DataList1_ItemCommand);

错误提示:“System.Web.UI.WebControls.DataList”并不包含“项模板”的定义


mjtfzh 2007-01-08
  • 打赏
  • 举报
回复
已解决,加分
cpp2017 2007-01-07
  • 打赏
  • 举报
回复
LinkButton4是DataList下的一个子控件 并不是这个类的一个控件。所以不能这样访问他。

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧