我正在尝试以编程方式更改EmptyDataTemplate中的标签,该标签基于单击按钮时输入到文本框中的文本。我的if(!IsPostBack)用于在初始页面加载时设置文本。但是,单击“搜索”按钮时,新值将无法正确分配。
标记
<table runat="server">
<tr>
<td>
<asp:Label ID="Label3" runat="server" Text="Project #: "></asp:Label>
</td>
<td>
<asp:TextBox ID="txtProjectID" runat="server"></asp:TextBox>
</td>
</tr>
</table>
<br />
<asp:Button ID="btnSearch" runat="server" Text="Search" />
<br />
<br />
<asp:ListView ID="ListView1" runat="server" DataKeyNames="BookingFormID" DataSourceID="BFListSQL">
<EmptyDataTemplate>
<table runat="server" style="background-color: #FFFFFF;border-collapse: collapse;border-color: #999999;border-style:none;border-width:1px;">
<tr>
<td>No Booking Forms found for Project # <asp:Label ID="lblProjectID" runat="server" />.</td>
</tr>
<tr></tr>
<tr>
<td><asp:LinkButton ID="btnNewBookingForm" runat="server" CommandName="NewInsert" Text="New Booking Form" /></td>
</tr>
</table>
</EmptyDataTemplate>
....
背后的代码
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
Label lblProjectID = (Label)ListView1.Controls[0].Controls[0].FindControl("lblProjectID");
lblProjectID.Text = "#####";
}
}
protected void btnSearch_Click(object sender, EventArgs e)
{
Label lblProjectID = (Label)ListView1.Controls[0].Controls[0].FindControl("lblProjectID");
if (!String.IsNullOrEmpty(txtProjectID.Text))
{
lblProjectID.Text = txtProjectID.Text;
}
else
{
lblProjectID.Text = "#####";
}
}
在初始页面加载时,它使用'#####'呈现来自!IsPostBack就好了。
在“搜索”文本框中输入内容并单击“搜索”按钮后,呈现的label.text为null或为空,因为没有任何内容显示我应该在哪里获取输入到“搜索”框中的文本或“# ####”。
我会更好地为按钮分配命令并将代码设置为而不是ButtonID_Click()吗?
对于它的价值,如果输入了有效的Project#,ListView表就可以了。
答案 0 :(得分:0)
我觉得自己像个假人。我的buttom标记中缺少background-color
。