webForumDet fria alternativet

databinder i en repeater

1 svar · 341 visningar · startad av doggelito

doggelitoMedlem sedan juni 20003 076 inlägg
#1

har en repeater med en textbox i:

<ItemTemplate>
...
     <asp:TextBox ID="Report" runat="server" Value='<%# DataBinder.Eval(Container.DataItem, "Report").ToString() %>' CssClass="textfieldsmall"></asp:TextBox> 
...
</ItemTemplate>

nu är det så att jag binder repeatern olika beroende på vilket datum en användare valt.
Kolumnen Report finns bara i den ena bindningen, inte i den andra.
Bindningen ser ut så här:

int DepartmentId = Convert.ToInt32(Request.Cookies["DepartmentId"].Value);
        ReportsBLL reports = new ReportsBLL();
        if (reports.GetReportsByDepartmentIdAndReportDate(DepartmentId, Calendar1.SelectedDate).Count == 0)
        {
            CountersBLL counters = new CountersBLL();
            Repeater1.DataSource = counters.GetCountersByDepartmentId(DepartmentId, true);
        }
        else
        {
            Repeater1.DataSource = reports.GetReportsByDepartmentIdAndReportDate(DepartmentId, Calendar1.SelectedDate);
        }
        Repeater1.DataBind();

Textboxen ska synas i båda bindningarna, den ena med värde, den andra tom.
Går det att sätta typ en if-tagg på value på nått vis eller hur kan jag göra?
Nu får jag felet:
DataBinding: 'System.Data.DataRowView' does not contain a property with the name 'Report'.

doggelitoMedlem sedan juni 20003 076 inlägg
#2

Itemdatabound verkar lösa problemet! :)
Påpeka gärna om jag krånglar till saker och ting som går att lösa på smidigare sätt.

    protected void Repeater1_ItemDataBound(object sender, System.Web.UI.WebControls.RepeaterItemEventArgs e)
    {
        if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
        {
            DataRowView drv = (DataRowView)e.Item.DataItem;
            if (drv.Row.Table.Columns.Contains("Report"))
            {
                TextBox Report = (TextBox)e.Item.FindControl("Report");
                Report.Text = drv.Row["Report"].ToString();
            }
        }
    }
130 ms totalt · 3 externa anrop · v20260731065814-full.7de19299
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
127 ms — hämta tråd, inlägg och bilagor (db)