asp.net dropdownlist repeater setselected

AvivEngineer

New member
asp.net dropdownlist repeater setselected

שלום
יש לי repeater שבתוכו יש dropdownlist המכיל שמות רחובות.
אני רוצה שהרחוב השייך לרשומה הנכחית יופיע ולא הראשון ברשימה.

ניסיתי מספר גישות ללא הצלחה.
1. בדף :
<asp:DropDownList ID="ddlStreetName" runat="server"
SelectedValue='<%# Eval("StreetName")%>'>
</asp:DropDownList>


או
<asp:DropDownList ID="ddlStreetName" runat="server"
SelectedValue='<%# Eval("IDStreet")%>'></asp:DropDownList>

נותן הודעה : בזמן ה-run
System.InvalidOperationException was unhandled by user code
HResult=-2146233079
Message=פעולות שירות של איגוד נתונים כגון Eval(), XPath() ו- Bind() ניתנים לשימוש רק בהקשר של פקד איגוד נתונים.


בכלל, כל דבר שאני מצרף לפקד בצד הדף נותן את השגיאה הזו כולל =setselected ואפילו =text.

2. בקוד מאחור יש לי :

protected void repRentAppartments_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
DropDownList selectLst = e.Item.FindControl("ddlStreetName") as DropDownList;
if (selectLst != null)
{
selectLst.DataSource = GetStreetNames(5000);// מחזיר טבלאת רחובות
selectLst.DataBind();
selectLst.DataTextField = "StreetName";
selectLst.DataValueField = "IDStreet";
selectLst.SelectedValue = ????
}
}
עובד תקין אבל
כאן אני נתקל בבעייה. אם ארשום ממש :
"2600" = selectLst.SelectedValue
אז אכן אקבל רוחב מסויים ראשון. אבל איך אני מספק את המפתח הנכון מה- repeater?

תודה
 
אני רואה את הקוד הזה,

ופשוט כואב לי הלב. אתה אפילו לא עברת עדיין ל mvc ?
מה זה הדבר הזה? asp.net 2.0 ?
 

AvivEngineer

New member
מצאתי פיתרון

אחרי ב- bind יש לקרוא לפונקציה הבאה
קוד:
    protected void setDDLSelected(object sender, RepeaterItemEventArgs e)
        {
            DropDownList selectLst = e.Item.FindControl("ddlStreetName") as DropDownList;
            Label lblStreet = e.Item.FindControl("lblStreetName") as Label;
            selectLst.Items.FindByText(lblStreet.Text).Selected = true;
        }

והקוד ב- repeater
<asp:Repeater ID="repRentAppartments" runat="server" OnItemCommand="repRentAppartments_ItemCommand" OnItemCreated="repRentAppartments_ItemCreated" OnItemDataBound="setDDLSelected">
 
למעלה