У меня есть странная проблема, на которую я не могу найти ответ. У меня есть GridView с некоторыми ItemTemplate, а также два DropDownLists внутри 2 отдельных EditItemTemplates.Как заполнить DropDownList в GridView edititemtemplate?
Они оба выглядят одинаково, но только один из них признается в загрузке страницы, а другой нет, и я получаю сообщение об ошибке: «имя не существует в текущем контексте»
Я хочу, чтобы заполнить оба DropDownLists с данными из БД и сделать SelectedValue равным значению метки. HallsDDL работает нормально, а второй нет.
Я видел некоторые подобные проблемы в Google, но не смог найти ответ для этого.
Мой ASPX:
<asp:GridView ID="gv" runat="server" AllowPaging="true" AllowSorting="true" Font-Size = "13pt" RowStyle-CssClass="cssWidth" HorizontalAlign="Center" AutoGenerateColumns="false"
AlternatingRowStyle-BackColor="#EEEEEE"
OnPageIndexChanging="myGridView_PageIndexChanging"
OnSorting="myGridView_Sorting"
onrowcancelingedit="GridView1_RowCancelling"
onrowediting="GridView1_RowEditing"
onrowupdating="GridView1_RowUpdating" OnRowCommand="GridView1_RowCommand" OnRowDataBound = "RowDataBound">
<Columns>
<asp:TemplateField HeaderText="מזהה">
<ItemTemplate>
<asp:LinkButton PostBackUrl='<%# "~/Events_workers.aspx?RowIndex=" + Container.DataItemIndex %>' runat="server" ID="Order_Id" Text='<%#Eval("Order_Id")%>' CssClass="cssWidth"/>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="שם פרטי" SortExpression="First_Name" >
<ItemTemplate>
<asp:Label runat="server" ID="First_Name" Text='<%#Eval("First_Name") %>' CssClass="cssWidth"/>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="שם משפחה" SortExpression="Last_Name">
<ItemTemplate>
<asp:Label runat="server" ID="Last_Name" Text='<%#Eval("Last_Name") %>' CssClass="cssWidth"/>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="תאריך אירוע">
<ItemTemplate>
<asp:Label runat="server" ID="EventDate" Text='<%#Eval("EventDate") %>' CssClass="cssWidth" />
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox runat="server" CssClass="cssWidth" ID="txtDate" Text='<%#Eval("EventDate") %>' MaxLength="15" onkeypress='validate(event)' />
</EditItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="אולם">
<ItemTemplate>
<asp:Label runat="server" ID="HallName" Text='<%#Eval("HallName") %>' CssClass="cssWidth" />
</ItemTemplate>
<EditItemTemplate>
<asp:Label ID="HallName" runat="server" Text='<%# Eval("HallName")%>' Visible = "false"></asp:Label>
<asp:DropDownList ID="HallsDDL" runat="server" CssClass="cssWidth"></asp:DropDownList>
</EditItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="סוג אירוע">
<ItemTemplate>
<asp:Label runat="server" ID="Event_Name" Text='<%#Eval("Event_Name") %>' CssClass="cssWidth" />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="תפריט">
<ItemTemplate>
<asp:Label ID="Menu_Name" runat="server" Text='<%#Eval("Menu_Name") %>' CssClass="cssWidth" />
</ItemTemplate>
<EditItemTemplate>
<asp:Label ID="Menu_Name" runat="server" Text='<%# Eval("Menu_Name")%>' Visible = "false"></asp:Label>
<asp:DropDownList ID="menuDDL" runat="server" CssClass="cssWidth" ></asp:DropDownList>
</EditItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="כמות אורחים" SortExpression="Guest_Amount">
<ItemTemplate>
<asp:Label runat="server" ID="Guest_Amount" Text='<%#Eval("Guest_Amount") %>' CssClass="cssWidth" />
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox runat="server" CssClass="cssWidth" ID="txtAGuest_Amount" Text='<%#Eval("Guest_Amount") %>' />
</EditItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
<ItemTemplate>
<asp:LinkButton ID="btnEdit" Text="ערוך" runat="server" CommandName="Edit" />
</ItemTemplate>
<EditItemTemplate>
<asp:LinkButton ID="btnUpdate" Text="עדכן" runat="server" CommandName="Update" />
<asp:LinkButton ID="btnCancel" Text="בטל" runat="server" CommandName="Cancel" />
</EditItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
<ItemTemplate>
<asp:LinkButton ID="btnDelete" Text="בטל אירוע" runat="server" CommandName="DeleteRecord" CausesValidation="False"
CommandArgument='<%#Eval("Order_Id") %>'></asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
Код позади:
protected void Page_Load(object sender, EventArgs e)
{
CultureInfo culture = (CultureInfo)CultureInfo.CurrentCulture.Clone();
culture.DateTimeFormat.ShortDatePattern = ("dd/MM/yyyy");
culture.DateTimeFormat.LongTimePattern = "";
Thread.CurrentThread.CurrentCulture = culture;
dal.check_orders_date();
/* if (Session["admin"] == null)
{
Response.Redirect("Admin_Login.aspx");
}*/
string state = (string)ViewState["state"];
name.Text = "אירועים עתידיים:";
DataTable Halls = new DataTable();
DataTable Menus = new DataTable();
if (!IsPostBack)
{
Halls = dal.get_halls();
hallsDDL.DataSource = Halls;
hallsDDL.DataValueField = "HallName";
hallsDDL.DataBind();
Menus = dal.get_Menus();
//menuDDL.DataSource = Menus;
//menuDDL.DataValueField = "Menu_Name";
//menuDDL.DataBind();
if (state != "edit" || ViewState["myDataTable"] == null)
{
BindGridData();
}
}
if (Request.QueryString["fname"] == null && Request.QueryString ["lname"] == null && Request.QueryString["fdate"] == null && Request.QueryString["tdate"] == null && Request.QueryString["hall_id"] != null)
{
System.Data.DataTable ds = dal.Get_orders_by_hall(Convert.ToInt32 (Request.QueryString["hall_id"]));
SetViewState(ds);
gv.DataSource = ds;
gv.DataBind();
}
}
В коде позади hallsDDL признается, пока menuDDL не существует. Я проверил и перепроверял все, но я не могу найти проблему.
Благодаря
Это было просто большое смешение относительно имен и источников привязки. сейчас работает нормально, спасибо – yishai