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>
 
**************************************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
 

 

Antwort per Email an