Значение не найдено в ограниченном поле в gridview? - PullRequest
2 голосов
/ 23 января 2012

Я пытаюсь присвоить значение скрытому полю в событии indexchange выпадающего списка!На самом деле проблема в том, что когда я пытаюсь обновить свою запись, я не могу найти значение этого скрытого поля!Пожалуйста, дайте мне решение или предложите любой другой вариант!Спасибо!

Мой вид сетки -

<asp:TemplateField HeaderText="LocCode" SortExpression="LocCode">
   <EditItemTemplate>
       <ajax:UpdatePanel ID="upEditsLocation" runat="server" UpdateMode="Conditional">
           <ContentTemplate>
              <asp:DropDownList ID="ddlLocation" runat="server" 
                 DataSourceID="sdsLocation" 
                 OnDataBound="ddlLocation_DataBound"  
                 DataValueField="LocCode" AppendDataBoundItems="false" 
                 DataTextField="LocCode" 
                 AutoPostBack="true" 
                 onselectedindexchanged="ddlLocation_SelectedIndexChanged">
              </asp:DropDownList>
              <asp:SqlDataSource ID="sdsLocation" runat="server" ConnectionString="<%$ ConnectionStrings:ccConnString %>"
                 ProviderName="<%$ ConnectionStrings:CCConnString.ProviderName %>" SelectCommand="Select LocCode from Location">
              </asp:SqlDataSource>
           </ContentTemplate>
       </ajax:UpdatePanel>
   </EditItemTemplate>
   <ItemTemplate>
       <asp:Label ID="lblLocation" runat="server" Text='<%# Bind("LocCode") %>'>
       </asp:Label>
   </ItemTemplate>
</asp:TemplateField>

, а мое событие indexchange -

protected void  ddlLocation_SelectedIndexChanged(object sender, EventArgs e)
{
    hdloc.Value = ddlLocation.SelectedItem.Text;

}

И мое скрытое поле -

<asp:HiddenField ID="hdloc" runat="server" />

Ответы [ 3 ]

0 голосов
/ 23 января 2012
GridViewRow cancel = (GridViewRow)GridView1.Rows[e.RowIndex];
Label lbldeleteID = (Label)cancel.FindControl("lblid");
0 голосов
/ 23 января 2012

Если вы не можете получить доступ к hdloc из кода, либо Visual Studio не добавляет его на aspx.designer.cs (попробуйте удалить его и добавить обратно или изменить идентификатор, а затем вернуться к исходному значению) или скрытое полепомещается в другой шаблон другого элемента управления связыванием, что означает, что вам нужно использовать ctrl.FindControl ("hdloc"), а затем привести к HiddenField.Также вам нужно поместить это скрытое поле в UpdatePanel с UpdateMode = "Always".

protected void  ddlLocation_SelectedIndexChanged(object sender, EventArgs e)
{   
    hdloc.Value = (sender as DropDownList).SelectedItem.Text;
}

Я уверен, что ddlLocation.SelectedItem.Text, подобно тому, как вы его используете, выдает ошибку компиляции, потому что ddlLocation не виден в коде позади, поскольку находится внутри EditItemTemplate.

0 голосов
/ 23 января 2012

Из кода, который я вижу, HiddenField не является частью вашей панели обновления.Следовательно, если вы присвоите ему какое-либо значение, оно не будет отражаться на клиентском компьютере.Увеличьте область панели, чтобы включить скрытое поле, а затем попробуйте.

ИЛИ вы можете попробовать это решение с форума ASP.net

Небольшое руководство по обновлению панели (MSDN)

Надеюсь, это поможет вам.

...