我有一个ASP.NET DataList
,其中定义了一个页脚:
<FooterTemplate>
<asp:DropDownList ID="ddlStatusList" runat="server">
</asp:DropDownList>
<input id="txtNotes" type="text" placeholder="Notes" />
<asp:Button runat="server" type="button" Text="Add" ID="btnAdd"></asp:Button>
</FooterTemplate>
我想要做的是,点击btnAdd
,获取txtNotes
和ddlStatusList
的值,但我无法弄清楚如何访问控件,更不用说价值观了。
我无法关注this之类的内容,因为我无法检查我的按钮是否已被点击(可能带有复选框),即便如此,我也不确定是否如所示,将能够使用findControl
。 (DataList
的页脚与项目的行为有何不同?)
我无法使用Button
的{{1}}&amp; commandName
属性,因为在数据绑定时,输入的文本将不存在,因此我无法设置commandValue
。
我尝试使用CommandValue
而不是普通的.NET LinkButton
,但遇到了同样的问题,我无法弄清楚如何从Button
/获取值TextBox
答案 0 :(得分:2)
以下应该工作。请参阅我为txtNotes添加了runat =“Server”:
ASPX:
<FooterTemplate>
<asp:DropDownList ID="ddlStatusList" runat="server">
</asp:DropDownList>
<input id="txtNotes" runat="server" type="text" placeholder="Notes" />
<asp:Button runat="server" type="button" Text="Add" ID="btnAdd"></asp:Button>
</FooterTemplate>
C#:
protected void btnAdd_Click(object sender, EventArgs e)
{
var txtNotes = (System.Web.UI.HtmlControls.HtmlInputText)(((Button)sender).Parent).FindControl("txtNotes");
var ddlStatusList = (DropDownList)(((Button)sender).Parent).FindControl("ddlStatusList");
}
答案 1 :(得分:0)
您可以使用Control.NamingContainer连续访问其他控件:
<FooterTemplate>
<asp:DropDownList ID="ddlStatusList" runat="server">
</asp:DropDownList>
<input id="txtNotes" type="text" placeholder="Notes" runat="server" />
<asp:Button runat="server" type="button" Text="Add" ID="btnAdd" OnClick="btnAdd_Click"></asp:Button>
</FooterTemplate>
protected void btnAdd_Click(object sender, EventArgs e)
{
Button btnAdd = (Button)sender;
DropDownList ddlStatusList = (DropDownList)btnAdd.NamingContainer.FindControl("ddlStatusList");
System.Web.UI.HtmlControls.HtmlInputText txtNotes = (System.Web.UI.HtmlControls.HtmlInputText)btnAdd.NamingContainer.FindControl("txtNotes");
int index = ddlStatusList.SelectedIndex;
string text = txtNotes.Value;
}