Молчун
Зарегистрирован: 27 August 2005
Сообщения: 38
Примеры кода: 0
|
RE[4]: Не работает метод FindControl |
04 October 2005 16:29 |
|
|
|
|
А описание метода и где он вызывается?
ок, прошу прощения, но выложу полностью код:
Вот МояПанель:
public class myParameterPanel: System.Web.UI.WebControls.Panel
{
public void generateTextBoxs () {
if (this.CountParam == 0 ) {
return;
}
for (int i=0; i<this.CountParam; i++){
//label and TextBox generating
Label lb = new Label();
lb.Text = NameParam[i] + " : " ;
TextBox tb = new TextBox();
tb.ID = "paramNr" + i;
//distance between parameter
Label lb1 = new Label();
lb1.Width = 40;
tb.Width = 40;
this.Controls.Add (lb);
this.Controls.Add (tb);
this.Controls.Add (lb1);
}
}
public string [] getParameters () {
int count = (int)ViewState["CountParam"];
string [] paramValue = new string [count];
for (int i=0; i<count; i++){
TextBox tbox = this.FindControl ("paramNr" + i) as TextBox;
if (tbox != null) {
paramValue [i] = tbox.Text;
}
else {
//ВОТ ЗДЕСЬ ПРОИСХОДИТ ОШИБКА, В ЭТО МЕСТО Я НЕ ДОЛЖЕН ПОПАДАТЬ В ОБЩЕМ
throw new Exception ("myParameterPanel.getParameters: unknown error");
}
}//for
return paramValue;
}
#region Properties
public int CountParam{
get {
if ( ViewState["CountParam"] == null )
return 0;
else
return (int)ViewState["CountParam"];
}
set {
ViewState["CountParam"] = value;
}
}
public string [] NameParam{
get {
if ( ViewState["NameParam"] == null )
return null;
else
return (string [])ViewState["NameParam"];
}
set {
ViewState["NameParam"] = value;
}
}
#endregion of Properties
}//end of class
Теперь код формы, в которой данная МояПанель встроена:
(в дальнейшем, по этой кнопке еще будут из БД браться список параметров, но пока эти параметры вручную прописаны (5штук)
private void Button1_Click(object sender, System.EventArgs e) {
string [] s = {"artikel","firma", "year", "nummer", "konto"};
//из этого поля берется количество параметров (временно) не больше 5 нужно вводить
if (this.tbFeedback.Text != "")
this.myPanel.CountParam = Convert.ToInt32(this.tbFeedback.Text);
else
this.myPanel.CountParam = 0;
this.myPanel.NameParam = s;
this.myPanel.generateTextBoxs();
}
Эту кнопку юзер должен нажать после того, как он ввел параметры
private void Button2_Click(object sender, System.EventArgs e) {
string [] s = this.myPanel.getParameters();
this.myPanel.Visible = false;
//Пока просто для контроля, все ли работает
this.tbFeedback.Text = "Control: ";
for (int i = 0; i < s.Length; i++)
this.tbFeedback.Text += "par " + i + " " + s[i] + "; ";
}
Вот в общем-то пока весь код. Понятно, что это для тестирования. Потом дело немного усложниться. По первой кнопке все работает: нажимаю, генерируется правильное количество ТекстБоксов.
Нажимаю вторую кнопку: не работает метод FindControl, который вызывается
|
|