问题描述
按钮编辑是在编辑datelist模板时加的现在是想通过点击编辑按钮然后获取到图片中的社团名称,其中社团名称是用的一个label来显示的。代码如下:<td>社团名称:</td><td><asp:LabelID="user_stname"runat="server"Text='<%#Eval("user_shetuan")%>'></asp:Label></td>尝试了搜索到的内容如调用datalist的ItemCommand事件然后给编辑按钮定义CommandName值将CommandName的值作为进行的操作的判断条件if(e.CommandName=="bianji"){intcmtid=int.parse(e.CommandArgument.ToString());Labellb=(Label)e.Item.FindControl("user_stname")Session["stname"]=la.ToString();}结果得到的Session["stname"]一直为空或是下面的foreach(DataListItemiteminDataList1.Items){控件类型s=DataList1.FIndControl("id")as控件类型;这里就可以对s作相应的处理了}所取得的值都仍是为空真心烦透了!!!!!不知道是哪里出了问题!谁能告诉我该怎么办!还有我给代码顶部加了EnableEventValidation="false"这个应该不影响吧!
解决方案
解决方案二:
aspx页面代码:<asp:PanelID="daishenhePanel"runat="server"><center><asp:Panelrunat="server"ID="xianshi"Height="212px"><asp:DataListID="DataList2"runat="server"OnItemCommand="DataList2_ItemCommand"><ItemTemplate><tableclass="auto-style1"><tr><td>社团名称:</td><td><asp:LabelID="user_stname"runat="server"Text='<%#Eval("user_shetuan")%>'></asp:Label></td><td>活动名称:</td><td><asp:LabelID="huodong_name"runat="server"Text='<%#Eval("huodong_name")%>'></asp:Label></td><td>活动类型:</td><td><asp:LabelID="huodong_leixing"runat="server"Text='<%#Eval("huodong_leixing")%>'></asp:Label></td></tr><tr><td>开始时间:</td><td><asp:LabelID="huodong_kaishi"runat="server"Text='<%#Eval("huodong_kaishi")%>'></asp:Label></td><td>活动人数</td><td><asp:LabelID="huodong_renshu"runat="server"Text='<%#Eval("huodong_renshu")%>'></asp:Label></td><td>活动地点</td><td><asp:LabelID="huodong_didian"runat="server"Text='<%#Eval("huodong_didian")%>'></asp:Label></td></tr><tr><td>结束时间:</td><td><asp:LabelID="huodong_jieshu"runat="server"Text='<%#Eval("huodong_jieshu")%>'></asp:Label></td><td>活动介绍</td><tdcolspan="3"rowspan="2"><asp:LabelID="huodong_jieshao"runat="server"Text='<%#Eval("huodong_jieshao")%>'></asp:Label></td></tr><tr><td>理由</td><tdcolspan="2"><asp:TextBoxID="TextBox1"runat="server"Height="50px"></asp:TextBox></td></tr><tr><tdcolspan="2"><asp:ButtonID="jujue"runat="server"Text="拒绝"/></td><tdcolspan="2"><asp:ButtonID="tongguo"runat="server"Text="通过"/></td><tdcolspan="2"><asp:ButtonID="bianji"runat="server"CommandName="bianji"Text="编辑"OnClick="bianji_Click"/></td></tr></table></ItemTemplate></asp:DataList></asp:Panel>
解决方案三:
首先,代码e.Item.FindControl("user_stname")应该能找到相应的Label。如果找不到,那么说明你的程序中的bug不仅仅只是这一点,应该是隐藏着巨大的bug,可能页面回发之后所有的状态都乱了或者丢了。其次,个别的时候,你可以为控件自定义属性,绑定任意你需要的值。例如写<asp:ButtonID="bianji"runat="server"CommandName="bianji"Text="编辑"OnClick="bianji_Click"我要的='<%#Eval("user_shetuan")%>'/>
那么就可以在你的代码中直接写Buttonbtn=(Button)sender;stringvalue=btn.Attributes["我要的"];
这就能取到自定义的属性值。此时就不用去别的地方去找了。
解决方案四:
不过,无论如何你使用自定义属性来获取值,在你有闲功夫的时候,还是要回到前一个FindControl的bug上去调试。因为那隐含着是一个深层次的技术问题。
解决方案五:
注意,第二点中我说的是bianji_Click事件处理的逻辑。一般来说我们都在离触发事件“的控件最近的”那个事件来处理逻辑,尽量不去扩大化到其冒泡上层去处理事件。
解决方案六:
<tablecellspacing="0"class="auto-style1"><tr><td>活动审核页面</td></tr><tr><td><asp:ButtonID="Button1"runat="server"OnClick="Button1_Click"Text="待审核的活动"/> <asp:ButtonID="Button2"runat="server"Text="已通过的活动"OnClick="Button2_Click"/> <asp:ButtonID="Button3"runat="server"Text="未通过的活动"OnClick="Button3_Click"/></td></tr><tr><td><asp:PanelID="daishenhePanel"runat="server"><center><asp:Panelrunat="server"ID="xianshi"Height="212px"><asp:DataListID="DataList2"runat="server"OnItemCommand="DataList2_ItemCommand"><ItemTemplate><tableclass="auto-style1"><tr><td>社团名称:</td><td><asp:LabelID="user_stname"runat="server"Text='<%#Eval("user_shetuan")%>'></asp:Label></td><td>活动名称:</td><td><asp:LabelID="huodong_name"runat="server"Text='<%#Eval("huodong_name")%>'></asp:Label></td><td>活动类型:</td><td><asp:LabelID="huodong_leixing"runat="server"Text='<%#Eval("huodong_leixing")%>'></asp:Label></td></tr><tr><td>开始时间:</td><td><asp:LabelID="huodong_kaishi"runat="server"Text='<%#Eval("huodong_kaishi")%>'></asp:Label></td><td>活动人数</td><td><asp:LabelID="huodong_renshu"runat="server"Text='<%#Eval("huodong_renshu")%>'></asp:Label></td><td>活动地点</td><td><asp:LabelID="huodong_didian"runat="server"Text='<%#Eval("huodong_didian")%>'></asp:Label></td></tr><tr><td>结束时间:</td><td><asp:LabelID="huodong_jieshu"runat="server"Text='<%#Eval("huodong_jieshu")%>'></asp:Label></td><td>活动介绍</td><tdcolspan="3"rowspan="2"><asp:LabelID="huodong_jieshao"runat="server"Text='<%#Eval("huodong_jieshao")%>'></asp:Label></td></tr><tr><td>理由</td><tdcolspan="2"><asp:TextBoxID="TextBox1"runat="server"Height="50px"></asp:TextBox></td></tr><tr><tdcolspan="2"><asp:ButtonID="jujue"runat="server"Text="拒绝"/></td><tdcolspan="2"><asp:ButtonID="tongguo"runat="server"Text="通过"/></td><tdcolspan="2"><asp:ButtonID="bianji"runat="server"CommandName="bianji"Text="编辑"OnClick="bianji_Click"/></td></tr></table></ItemTemplate></asp:DataList></asp:Panel></center><br/><asp:PanelID="xiugai"runat="server"><center><tableclass="auto-style9"><tr><td>社团名称:</td><td><asp:LabelID="stname"runat="server"></asp:Label></td><td>活动名称:</td><td><asp:LabelID="mingcheng1"runat="server"></asp:Label></td><td>活动类型:</td><td><asp:LabelID="leixing1"runat="server"></asp:Label></td></tr><tr><td>开始时间:</td><td><asp:LabelID="kaishi1"runat="server"></asp:Label></td><td>活动人数:</td><td><asp:LabelID="renshu1"runat="server"></asp:Label></td><td>活动地点:</td><td><asp:LabelID="didian1"runat="server"></asp:Label></td></tr><tr><td>结束时间:</td><td><asp:LabelID="jieshu1"runat="server"></asp:Label></td><td>活动介绍:</td><tdcolspan="3"rowspan="2"><asp:LabelID="jieshao1"runat="server"></asp:Label></td></tr><tr><tdclass="auto-style8">理由:</td><tdclass="auto-style6"colspan="2"><asp:TextBoxID="liyou1"runat="server"Height="53px"Width="137px"></asp:TextBox></td></tr><tr><tdclass="auto-style4"colspan="2"> </td><tdclass="auto-style7"><asp:ButtonID="Button7"runat="server"Text="通过"/></td><td><asp:ButtonID="Button8"runat="server"Text="编辑"/></td></tr></table></center></asp:Panel></asp:Panel><asp:PanelID="yitongguoPanel"runat="server"></asp:Panel><asp:PanelID="weitongguoPanel"runat="server"></asp:Panel></td></tr><tr><td>1</td></tr></table>
解决方案七:
usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Web;usingSystem.Web.UI;usingSystem.Web.UI.WebControls;usingSystem.Web.Configuration;usingSystem.Data;usingSystem.Data.SqlClient;publicpartialclasshuodongshenhe:System.Web.UI.Page{protectedvoidPage_Load(objectsender,EventArgse){daishenhePanel.Visible=true;xianshi.Visible=true;xiugai.Visible=false;stringstrConn=WebConfigurationManager.ConnectionStrings["stglxtConnectionString"].ConnectionString;SqlConnectioncon=newSqlConnection(strConn);DataSetds=newDataSet();con.Open();SqlDataAdaptersqld=newSqlDataAdapter("SELECTuser_shetuan,huodong_name,huodong_leixing,huodong_renshu,huodong_kaishi,huodong_jieshu,huodong_didian,huodong_jieshaoFROMhuodong_shenhe",con);sqld.Fill(ds,"user");DataTabledTable=ds.Tables["user"];DataList2.DataSource=dTable;DataList2.DataBind();con.Close();con=null;}protectedvoidButton1_Click(objectsender,EventArgse){daishenhePanel.Visible=true;yitongguoPanel.Visible=false;weitongguoPanel.Visible=false;}protectedvoidButton2_Click(objectsender,EventArgse){daishenhePanel.Visible=false;yitongguoPanel.Visible=true;weitongguoPanel.Visible=false;}protectedvoidButton3_Click(objectsender,EventArgse){daishenhePanel.Visible=false;yitongguoPanel.Visible=false;weitongguoPanel.Visible=true;}protectedvoidbianji_Click(objectsender,EventArgse){xianshi.Visible=false;xiugai.Visible=true;}protectedvoidDataList2_ItemCommand(objectsource,DataListCommandEventArgse){if(e.CommandName=="bianji"){foreach(DataListItemiteminthis.DataList2.Items){((Label)item.FindControl("user_stname")).Visible=false;stringnum=((Label)e.Item.FindControl("user_stname")).Text;this.stname.Text=num;}}}}
解决方案八:
有两个panel其中从xianshipanel中的datalist中取值后传递到xiugaipanel中同时xianshiFalse