Avatar billede krukken Mester
24. oktober 2007 - 12:37 Der er 4 kommentarer og
1 løsning

Hvorfor får jeg den fejl

Jeg får følgende fejl: "The DataSourceID of 'faktaboks_table' must be the ID of a control of type IDataSource.  A control with ID 'Faktaboks' could not be found."

Min kode:
Kodebehind:
***********
public partial class Controls_Faktaboks : System.Web.UI.UserControl {
    private Element _product;
    protected  DataSet _dataSet;
    protected DataTable _dataTable;

    public Element Product {
        get { return _product; }
        set { _product = value; }
    }

    protected void Page_Load(object sender, EventArgs e) {
        _dataSet = new DataSet();
        _dataTable = _dataSet.Tables.Add("Faktaboks");
        _dataTable.Columns.Add("Key", Type.GetType("System.String"));
        _dataTable.Columns.Add("Value", Type.GetType("System.String"));

        DataRow dr = _dataTable.NewRow();
        dr["Key"] = "Key1";
        dr["Value"] = "Value1";
        _dataTable.Rows.Add(dr);

        dr = _dataTable.NewRow();
        dr["Key"] = "Key2";
        dr["Value"] = "Value2";
        _dataTable.Rows.Add(dr);

        dr = _dataTable.NewRow();
        dr["Key"] = "Key3";
        dr["Value"] = "Value3";
        _dataTable.Rows.Add(dr);

        dr = _dataTable.NewRow();
        dr["Key"] = "Key4";
        dr["Value"] = "Value4";
        _dataTable.Rows.Add(dr);
    }
}

***********

Html-fil:
**********
<asp:Repeater ID="faktaboks_table"  DataSourceID="Faktaboks" DataSource="<%# _dataSet %>" runat="server">
    <HeaderTemplate>
        <table class="info">
    </HeaderTemplate>
    <ItemTemplate>
        <tr>
            <td class="k">
                <%# Eval("Key") %>
            </td>
            <td class="v">
                <%# Eval("Value")%>
            </td>
        </tr>
    </ItemTemplate>
    <FooterTemplate>
        </table></FooterTemplate>
</asp:Repeater>
**********
Avatar billede Syska Mester
24. oktober 2007 - 13:54 #1
Jeg mener ikke du skal sætte både DataSource og DataSourceID ....

Du kunne i din codebehind skrive:

faktaboks_table.DataSource = _dataSet;
faktaboks_table.DataBind();

og så fjerne "DataSourceID="Faktaboks" DataSource="<%# _dataSet %>" " fra din repeater ....

// ouT
Avatar billede krukken Mester
24. oktober 2007 - 14:15 #2
Ved at indsætte DataSource og DataSourceID kan man så ikke netop undgå at bruge:
faktaboks_table.DataSource = _dataSet;
faktaboks_table.DataBind();

Hvad bruger man ellers DataSourceID til?
Avatar billede Syska Mester
24. oktober 2007 - 14:51 #3
ohhh, da DataSource skulle vist også være: _dataSet.Tables[0];

Jo, men det kræver at du bruger en korrekt datasource ... en som nedarver fra IDataSource interfacet ...

SqlDataSource, XmlDataSource og ObjectDataSource ved jeg nedarver fra den ...

Men hvad er meningen med at undgå at have det i codebehind når du allerede har så meget der i forvejen ?

Selvf tænkt eksemple kan jeg se på din kode ...

// oUT
Avatar billede krukken Mester
21. december 2007 - 15:58 #4
Ligger du et svar?
Avatar billede Syska Mester
23. december 2007 - 13:49 #5
svar
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester