ark*_*lin 2 c# asp.net textbox datalist
我在面板中有一个TextBox控件,这个面板在DataList ItemTemplate中.
触发ItemCommand事件后,一切正常,但TextBox.Text属性始终为空字符串"",尽管其中有一些文本.
我尝试了几种方法但没有成功.如果有人可以帮助我,我真的很感激.简化代码如下所示.谢谢!
ASPX页面:
<asp:DataList ID="dlDataList" runat="server" onitemcommand="dlDataList_ItemCommand">
<ItemTemplate>
<asp:Panel ID="pnlReply" runat="server" Visible="False">
<asp:TextBox ID="txtTextBox" runat="server"></asp:TextBox><br />
<asp:LinkButton ID="lnkbtnSend" CommandName="Send" runat="server">Send</asp:LinkButton>
</asp:Panel><br />
<asp:LinkButton ID="OpenPanel" CommandName="OpenPanel" runat="server">Open panel</asp:LinkButton>
</ItemTemplate>
</asp:DataList>
</asp:Content>
Run Code Online (Sandbox Code Playgroud)
ASPX.CS页面代码背后
protected void Page_Load(object sender, EventArgs e)
{
FillDataList();
}
private void FillDataList()
{
List<string> list = new List<string>();
list.Add("First");
list.Add("Second");
list.Add("Third");
dlDataList.DataSource = list;
dlDataList.DataBind();
}
protected void dlDataList_ItemCommand(object source, DataListCommandEventArgs e)
{
if (e.CommandName == "OpenPanel")
{
Panel pnlReply = (Panel)e.Item.FindControl("pnlReply");
pnlReply.Visible = true;
}
if (e.CommandName == "Send")
{
TextBox txtTextBox = (TextBox)e.Item.FindControl("txtTextBox");
//I tried this way also..
//TextBox txtTextBox = (TextBox)e.item.FindControl("pnlReady").FindControl("txtTextBox");
Label1.Text = txtTextBox.Text;
}
}
Run Code Online (Sandbox Code Playgroud)
请IsPostBack
在页面加载事件中使用.如果没有它,你FillDataList();
就会在每次回发时执行并重置你的DataList
.
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
FillDataList();
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3707 次 |
最近记录: |