Во-первых, я хотел бы поблагодарить вас за то, что вы нашли время прочитать мою проблему и, возможно, также помочь мне.:)
Теперь к моей проблеме ... Я создаю новые кнопки с кодом C # и присоединяю их к моей панели с именем Panel1:
Button novgumb = new Button();
novgumb.Click += new EventHandler(ButtonOdstrani);
novgumb.CommandArgument = "2";
novgumb.Visible = true;
novgumb.Text = "Test";
Panel1.Controls.Add(novgumb);
Кнопка, созданная таким образом,должен вызвать мой метод ButtonOdstrani:
public void ButtonOdstrani(object sender, EventArgs e)
{
string asd = ((Button)sender).CommandArgument;
//...
}
Теперь, когда я помещаю код Button в PageLoad, он работает нормально, но когда я помещаю его в свой метод для записи XML на сайт, кнопки, созданные таким образомне будет вызывать функцию ButtonOdstrani:
protected void IzpisXML()
{
BranjeXML();
string[] element = ime.Split('$');
//Button gumbs = new Button();
//gumbs.Click += new EventHandler(ButtonOdstrani);
//gumbs.Visible = true;
//gumbs.Text = ("Odstrani ");
//Panel1.Controls.Add(gumbs);
for (; z < stevec/2; z++)
{
string imeGostilne = element[i];
string naslov = element[i + 1];
string telefon = element[i + 2];
string spletnaStran = element[i + 3];
string odpiralniOD = element[i + 4];
string odpiralniDO = element[i + 5];
string boni = element[i + 6];
Label labela = new Label();
labela.Text = "<b>Ime gostilne:</b> " + imeGostilne + "<br /><b>Naslov:</b> " + naslov + "<br><b>Telefon:</b> " + telefon + "<br><b>Spletna stran:</b> " + spletnaStran + "<br><b>Odpiralni cas:</b> " + odpiralniOD + " - " + odpiralniDO + "<br /><b>Študnetski boni:</b> " + boni + "<br />";
labela.Enabled = true;
labela.EnableTheming = true;
labela.EnableViewState = true;
labela.Visible = true;
labela.ID = ("Label" + (z + 1));
Panel1.Controls.Add(labela);
Button novgumb = new Button();
novgumb.Click += new EventHandler(ButtonOdstrani);
novgumb.CommandArgument = "2";
novgumb.Visible = true;
novgumb.Text = "Test";
Panel1.Controls.Add(novgumb);
Label hr = new Label();
hr.Text = "<hr />";
hr.Visible = true;
hr.Enabled = true;
hr.EnableTheming = true;
hr.EnableViewState = true;
Panel1.Controls.Add(hr);
i += 7;
}
}
Теперь обратите внимание на закомментированную кнопку за предложением for - она не сработала другим способом.Я имею в виду, что «это не сработало», оно не вызывало функцию ButtonOdstrani, оно просто обновляло сайт (PostBack).
Я был бы очень благодарен за любое решение для совета.1015 *
ОК, теперь я создал следующее:
private Button[] ButtonZaOdstranjevanje;
protected override void OnInit(EventArgs e)
{
ButtonZaOdstranjevanje = new Button[stevec/2];
base.OnInit(e);
BranjeXML();
for (int j=0; j < stevec/2; j++)
{
Button novgumb = new Button();
novgumb.Click += new EventHandler(ButtonOdstrani);
novgumb.Visible = true;
novgumb.Text = "Odstrani gostilno";
ButtonZaOdstranjevanje[j] = novgumb;
}
}
Но проблема в том, что я получаю ошибку: «Индекс был вне границ массива», это происходит при:
ButtonZaOdstranjevanje[j] = novgumb;
Это не логично, поскольку значение stevec равно 4, поэтому stevec / 2 = 2, а для параметра j установлено значение 0. Кто-нибудь знает, как исправить эту ошибку?