.asp.控件参数控件 ID 冲突


<asp:ControlParameter ControlID="ddListPlayerPointSystems" Name="profileid" PropertyName="SelectedValue" />
            <asp:ControlParameter ControlID="ddListCmty" Name="cmty" PropertyName="SelectedValue" />
            <asp:ControlParameter ControlID="ctl00$MainContent$TabContainer1$TabPanel1$FormView3$pointsTextBox" Name="InsertPts" PropertyName="Text" Type="Decimal" />

我很难理解为什么在第一个控制参数中我可以调用下拉框 id,但不能调用 pointsTextBox 的文本框 id。我正在使用带有多个面板的asp ajax选项卡容器的母版页。如果我取下"ctl00$MainContent$TabContainer1$TabPanel1$FormView3$",我得到一个未找到的控件,但我不知道为什么这对其他两个控件参数有效

编辑所以我找到了解决问题的方法。多亏了@TheGeekYouNeed和@JamesJ我明白了为什么我需要该特定文本框的更长路径名(删除在选项卡容器之外,因此直接名称有效)。但我发现,由于我通过'<%# Bind("name", "{0:n}") %>'分配该文本框的值,所以我只能使用 asp:Parameter 而不是 ControlParameter,如下所示:

"<asp:Parameter Name="name" Type="String" />"

问题是我不太明白这一切是如何工作的。

pointsTextBox 的 ControlID 不是 'ct100$MainContent$TabContainer。等。。。 在服务器端。

在代码隐藏中设置 CONTROLID,以便可以使用 FindControl("pointsTextBox") 获取对文本框控件的引用。

您可以执行以下操作:

TextBox t = this.FindControl("pointsTextBox") as TextBox;
if(t != null)
{
    ddListPlayerPOintSystems.Add(new { COntrolID = t, Name = "InsertPts", PropertyName="Text", Type="Decimal"});
}

我还没有测试过它,所以我并不是说代码是完美的,但你需要遵循的方法在这里说明。

最新更新