binden von Daten an repeater innerhalb eines gridview

Hallo habe einen repeater, die innerhalb einer gridview. wenn ich bind die Daten in gridview-Daten die Bindung an den controles innerhalb des gridview-aber repeater ist nicht verbindlich.

<asp:GridView ID="gvMain" runat="server" AllowPaging="false" AutoGenerateColumns="false"
          Width="200px" Height="200px" 
    onrowdatabound="gvMain_RowDataBound">
        <Columns>
            <asp:TemplateField>
                <ItemTemplate>
                    <asp:LinkButton ID="lbtnDptName" runat="server" Text='<%# Eval("deptName")%>'></asp:LinkButton>
                    <asp:Label ID="lblDptDesc" runat="server" Text = "sdfsdfsdfdsf"></asp:Label>
                    <asp:Repeater ID="rtFunctions" runat="server" OnItemDataBound="rtFunctions_ItemDataBound" >
                        <HeaderTemplate>
                            <table>
                        </HeaderTemplate>
                        <ItemTemplate>
                            <tr>
                                <td>
                                    <asp:LinkButton ID="lbtnFunctions" runat="server" ></asp:LinkButton>
                                    <asp:Label ID="lbltemp" Style="border:1px solid blue;width:20px;height:20px;background:green" runat="server" Text="TempLabel" ></asp:Label>
                                </td>
                            </tr>
                        </ItemTemplate>
                        <FooterTemplate>
                            </table>
                        </FooterTemplate>
                    </asp:Repeater>

                </ItemTemplate>
            </asp:TemplateField>
        </Columns>
    </asp:GridView>

in die Seite laden:

gvMain.DataSource = objDeptColl;
                    gvMain.DataBind();

Codebehind-repeater:

protected void gvMain_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            FunctionCollection objTempFuncColl = new FunctionCollection();
            objTempFuncColl = (FunctionCollection)Cache["objFuncColl"];
            Repeater rt = (Repeater)e.Row.FindControl("rtFunctions");

            if (e.Row.RowType == DataControlRowType.DataRow && objTempFuncColl.Count !=0 )
            {
                rt.DataSource = objTempFuncColl;
                rt.DataBind();
            }
        }
        protected void rtFunctions_ItemDataBound(object sender, RepeaterItemEventArgs e)
    {
        FunctionCollection objTempFuncColl = new FunctionCollection();
        objTempFuncColl = (FunctionCollection)Cache["objFuncColl"];
        Repeater rt = (Repeater)e.Item.FindControl("rtFunctions");
        if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
        {
            foreach (Functions f in objTempFuncColl)
            {
                LinkButton lnk = (LinkButton)e.Item.FindControl("lbtnFunctions");
                lnk.Text = f.funcName;
            }
        }
    }

linkbutton in gridview ist verbindlich, aber der linkbutton im repeater ist nicht verbindlich.

  • wo ist der code, der tatsächlich binden von Daten an den repeater?
  • Ich habe den code Hinzugefügt ..finden Sie, dass in der Frage
  • Wenn Sie einen Haltepunkt auf die DataBind() für den repeater, trifft es das?
  • Ja.. die foreach-Schleife in das Itemdatabound-Ereignis wird Durchlaufen und der Funktionsname-Wert wird beim anfügen an die link-Taste, aber es ist nicht die Anzeige im repeater.
  • wenn Sie fügen Sie einige Standard-text in den Linkbutton und kommentieren Sie den code, der versucht, es zu ändern, tut es das display dann? Um ehrlich zu sein, kommentieren Sie die ganze rtFunctions_ItemDataBound und sehen, was passiert.
  • Ich dachte, wie die noch so verwendet das label nach den link-button . Text für die, die auch nicht anzeigen
  • Funktioniert f.funcName einen Wert?
  • Ja.. es ist verbindlich den linkbutton mit den Werten. problem ist linkbutton-Wert wird nicht angezeigt
  • Sind Sie sicher? Wenn Sie die Einstellung lnk.Text in ""/Zeichenfolge.leer ist, werden Sie nicht sehen, das gleiche mit der label. Setzen Sie einen Haltepunkt auf f.Funktionsname und einfach nur bestätigen. Ich wurden erwischt, die von dumme Dinge wie diese vor
  • ChrisBint: linkbutton ist die Zuweisung an den Wert richtig. finden Sie das Etikett in der aspx. Ich weiß nicht, warum die den label-text auch nicht angezeigt
  • lassen Sie uns weiter, diese Diskussion im chat
  • Haben Sie bestätigt, dass der Funktionsname hat eigentlich nur einen Wert anzeigen? Es kann sein, zuweisen, aber wenn es die Zuordnung zu einem leeren string, nichts angezeigt werden würde. Setzen Sie einen Haltepunkt in den code und bewegen Sie den Mauszeiger über f.Funktionsname und sicherzustellen, dass es wirklich einen Wert hat.
  • Es ist mit den Werten.
  • Siehst du Sie (Bezeichnung und link) in der HTML-Quelle?
  • Nein.. dem Versuch, sich auf verschiedene Art und Weise

InformationsquelleAutor karthik k | 2011-07-06
Schreibe einen Kommentar