2012-04-18 16 views
0
<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" /> 

我無法理解爲什麼在第一個controlparameter我可以調用dropdownbox id但不是文本框id是pointsTextBox。我正在使用帶有多個面板的asp ajax選項卡容器的母版頁。如果我脫下「ctl00 $搜索Maincontent $ TabContainer1 $ TabPanel1 $ FormView3 $」我拿到的一個控件未找到,但我不知道爲什麼這個工程的另外兩個controlparametersasp.ControlParamter控件ID confict

編輯 所以我找到了一個解決方案,我問題。感謝@TheGeekYouNeed和@JamesJ,我明白爲什麼我會要求該特定文本框的更長路徑名稱(drop是在tabcontainer之外,因此直接名稱工作)。但我發現,因爲我通過'<%#綁定(「name」,「{0:n}」)%>'分配了該文本框的值,我可以使用asp:Parameter而不是ControlParameter像這樣:

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

問題是,我不太明白這是如何工作的。

回答

0

pointsTextBox的ControlID不是'ct100 $ MainContent $ TabContainer..etc ...在服務器端。

在後面的代碼中設置COntrolID,以便您可以使用FindControl(「pointsTextBox」)來獲取對文本框控件的引用。

你可以這樣做:

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

我沒有測試過,所以我並沒有說的代碼是完美的,但在這裏說明你需要遵循的方法。

+0

但它一切正常,如果我添加全名,但下拉菜單似乎並不需要它。 'ct100 $ MainContent $ TabContainer..etc'是頁面運行後的全名,asp更改了名稱。我只是尋找解釋爲什麼文本框需要更長的路徑名。 – user1342169 2012-04-18 18:30:52

+1

'DropDownList'不需要它,因爲它可以直接從頁面訪問,而另一個控件可能嵌套在數據綁定控件或類似的東西中。 – 2012-04-18 18:35:50