Hi, ich habe eine
Internetseite zum suchen von Datens�tzen programmiert.
Leider muss ich die
Spalten des DataGrids im Code dynamisch erzeugen, daraus resultiert auch mein
Problem.
Die Aktionen die von
den ButtonColumns ausgef�hrt werden sollen, werden nicht
ausgef�hrt.
Das liegt daran das
ich die ButtonColumn nicht in der aspx-Datei, sondern in der Codebehind Datei
erstelle.
Ich denke das das am
Binden liegt, da nach klicken auf den Pushbutton ein Roundtripp stattfindet, und
mein
Grid neu aufgebaut,
bzw. nicht aufgebaut wird. Das hei�t Der Button, der das Event ausf�hrt ist nach
dem Roundtripp gar nicht mehr da
und kann somit auch
nicht ausgef�hrt werden.
Ich habe einige
Themen im Netz gefunden, die �hnliche probleme schildern aber aus keinem konnte
ich eine L�sung herleiten.
Hoffe hier kann mir
jemand helfen!
Quellcodeausz�ge:
*********************************************companies.aspx*****************************************
<ASP:DataGrid id="dg_AcmCompanies"
runat="server"
Width="750"
BackColor="#cccccc"
BorderColor="#333333"
ShowFooter="false"
CellPadding=3
CellSpacing="0"
Font-Name="Verdana"
Font-Size="8pt"
HeaderStyle-BackColor="#999999"
AllowSorting="true"
AutoGenerateColumns="false"
EnableViewState="true">
<columns>
</columns>
</ASP:DataGrid>
Width="750"
BackColor="#cccccc"
BorderColor="#333333"
ShowFooter="false"
CellPadding=3
CellSpacing="0"
Font-Name="Verdana"
Font-Size="8pt"
HeaderStyle-BackColor="#999999"
AllowSorting="true"
AutoGenerateColumns="false"
EnableViewState="true">
<columns>
</columns>
</ASP:DataGrid>
**************************************companies.aspx.cs********************************************
protected void ItemCommand(Object sender,
DataGridCommandEventArgs e)
{
Response.Write(e.CommandName.ToString());
}
protected void dg_AcmCompanies_ItemCreated(Object
sender, DataGridItemEventArgs e)
{
if
(ViewState["System"].ToString() == "AdCIS"){
Response.Write("as ");
//Sets an CSS-Style to the Button in the DataGrid
if
(e.Item.ItemType == ListItemType.Item
|| e.Item.ItemType == ListItemType.AlternatingItem)
{
Button ImportButton;
ImportButton = (Button)Convert.ChangeType(e.Item.Cells[9].Controls[0],
typeof(Button));
ImportButton.CssClass = "gridbutton";
ImportButton.Width = 55;
//Add an Attribute "onlick" which references to the _javascript_ Code in
Page_Load Method
//ImportButton.Attributes["onclick"] = "return
__doConfirm(this);";
}
}
}
protected DataView GetDataSource(string sqlSelect,
string sortField)// starts Sql-Select and fills Company-Table
{
string strCompanyTable =
string.Empty;
DataSet dsCompany = new
DataSet();
BoundColumn IdCol = new
BoundColumn();
IdCol.DataField =
"ID";
IdCol.HeaderText =
"ID";
IdCol.Visible =
false;
BoundColumn FiNrCol = new
BoundColumn();
FiNrCol.DataField =
"finr";
FiNrCol.HeaderText =
"FiNr";
FiNrCol.SortExpression =
"finr";
FiNrCol.Visible =
true;
BoundColumn CompanyCol = new
BoundColumn();
CompanyCol.DataField =
"company";
CompanyCol.HeaderText =
"Company";
CompanyCol.Visible =
true;
BoundColumn StreetCol = new
BoundColumn();
StreetCol.DataField =
"street";
StreetCol.HeaderText =
"Street";
StreetCol.Visible =
true;
BoundColumn ZipCol = new
BoundColumn();
ZipCol.DataField =
"zip";
ZipCol.HeaderText =
"ZIP";
ZipCol.Visible =
true;
BoundColumn CityCol = new
BoundColumn();
CityCol.DataField =
"city";
CityCol.HeaderText =
"City";
CityCol.Visible =
true;
BoundColumn CountryCol = new
BoundColumn();
CountryCol.DataField =
"country";
CountryCol.HeaderText =
"Country";
CountryCol.Visible =
true;
BoundColumn SystemCol = new
BoundColumn();
SystemCol.DataField =
"mandant";
SystemCol.HeaderText = "AdCIS
System";
SystemCol.Visible =
true;
if
(ViewState["System"].ToString() == "ACM"){
strCompanyTable = "contractcompany";
SqlDb.OpenDb();
dsCompany = SqlDb.StartQuery_DS(sqlSelect,
strCompanyTable);
SqlDb.CloseDb();
ButtonColumn SelectCol = new ButtonColumn();
SelectCol.ButtonType = ButtonColumnType.LinkButton;
SelectCol.Text = "Edit";
SelectCol.CommandName = "Edit";
SelectCol.ItemStyle.Width = Unit.Point(40);
SelectCol.HeaderStyle.HorizontalAlign =
HorizontalAlign.Center;
SelectCol.ItemStyle.HorizontalAlign =
HorizontalAlign.Center;
dg_AcmCompanies.Columns.Add(SelectCol);
dg_AcmCompanies.Columns.Add(IdCol);
dg_AcmCompanies.Columns.Add(FiNrCol);
dg_AcmCompanies.Columns.Add(CompanyCol);
dg_AcmCompanies.Columns.Add(StreetCol);
dg_AcmCompanies.Columns.Add(ZipCol);
dg_AcmCompanies.Columns.Add(CityCol);
dg_AcmCompanies.Columns.Add(CountryCol);
dg_AcmCompanies.Columns.Add(SystemCol);
dg_AcmCompanies.ItemCommand += new
DataGridCommandEventHandler(this.ItemCommand);
}else
if(ViewState["System"].ToString() == "AdCIS"){
strCompanyTable = "inv_fi";
AdCISDb.OpenDb();
dsCompany = AdCISDb.StartQuery_DS(sqlSelect,
strCompanyTable);
AdCISDb.CloseDb();
HyperLinkColumn EditCol = new HyperLinkColumn();
EditCol.Text = "Edit";
EditCol.DataNavigateUrlField = "id";
EditCol.DataNavigateUrlFormatString =
"adcislogin.aspx?adciscmd=update&id={0}";
EditCol.ItemStyle.Width = Unit.Point(30);
ButtonColumn ImportCol = new ButtonColumn();
ImportCol.ButtonType = ButtonColumnType.PushButton;
ImportCol.Text = "Import";
ImportCol.CommandName = "Import";
ImportCol.ItemStyle.Width = Unit.Point(40);
ImportCol.HeaderStyle.HorizontalAlign =
HorizontalAlign.Center;
ImportCol.ItemStyle.HorizontalAlign =
HorizontalAlign.Center;
dg_AcmCompanies.Columns.Add(EditCol);
dg_AcmCompanies.Columns.Add(IdCol);
dg_AcmCompanies.Columns.Add(FiNrCol);
dg_AcmCompanies.Columns.Add(CompanyCol);
dg_AcmCompanies.Columns.Add(StreetCol);
dg_AcmCompanies.Columns.Add(ZipCol);
dg_AcmCompanies.Columns.Add(CityCol);
dg_AcmCompanies.Columns.Add(CountryCol);
dg_AcmCompanies.Columns.Add(SystemCol);
dg_AcmCompanies.Columns.Add(ImportCol);
dg_AcmCompanies.ItemCommand += new
DataGridCommandEventHandler(this.ItemCommand);
}
DataView CompanySource =
dsCompany.Tables[strCompanyTable].DefaultView;
CompanySource.Sort =
sortField;
return
CompanySource;
}
**************************************************************
************************************
Martin
Schmitz
IT-Services
AdLINK Internet Media AG
Elgendorfer Str.
57
56410 Montabaur
E-Mail: [EMAIL PROTECTED]
Phone: +49 (0)2602
96-2622
Telefax: +49 (0)2602 96-1912
