2013-08-01 1 views
1

У меня есть элемент управления Gridview, который возвращает строки из таблицы с именем employeeID. Я возвращаю 10 строк за раз и разрешаю пейджинг. То, что я хотел бы сделать, это разместить HiddenField в шаблоне в Gridview. Я хочу назначить или привязать значение из элемента управления Gridview к HiddenField. Значение, которое я хочу связать, - это employeeID.Назначение значений строки Gridview для скрытого поля внутри шаблона. Используйте кнопку, чтобы отправить значение скрытого поля на другую страницу.

Затем я хочу, чтобы иметь возможность представить значение, присвоенное HiddenField на другую страницу, которая имеет SqlDataSource с параметром, поле формы ищет ценности HiddenField быть принят. Для этого я также поместил кнопку отправки в поле шаблона элемента рядом со скрытым полем. Мое предположение заключается в том, что кнопка submit отправит значение HiddenField каждой строки на мою вторую страницу, чтобы получить параметр formfield (Hiddenfield1).

Я считаю, что мое предположение ошибочно, и есть еще кое-какие кодировки или работы, которые необходимо выполнить. В итоге я пытаюсь связать каждое значение строки в элементе управления GridView (значение employeeID), а затем отправить это значение на другую страницу, которая его получит. Мне легко передать значение url из gridview, но в этом случае передача запроса с помощью url не является вариантом.

Page 1 - С скрытое:

<asp:GridView ID="GridView2" runat="server" AutoGenerateColumns="False" DataKeyNames="workoutID" DataSourceID="SqlDataSource5"> 
    <Columns> 
     <asp:BoundField DataField="workoutID" HeaderText="workoutID" InsertVisible="False" ReadOnly="True" SortExpression="workoutID" /> 
     <asp:BoundField DataField="workoutTitle" HeaderText="workoutTitle" SortExpression="workoutTitle" /> 
     <asp:BoundField DataField="UserID" HeaderText="UserID" SortExpression="UserID" /> 
     <asp:BoundField DataField="description" HeaderText="description" SortExpression="description" /> 
     <asp:BoundField DataField="exercisenotes" HeaderText="exercisenotes" SortExpression="exercisenotes" /> 
     <asp:TemplateField> 
      <ItemTemplate> 
       <asp:HiddenField ID="HiddenField1" runat="server" Value='<%# Eval("workoutID") %>' /> 
       <asp:Button ID="Button1" runat="server" PostBackUrl="~/postfromgridview.aspx" Text="Button" /> 
      </ItemTemplate> 
     </asp:TemplateField> 
    </Columns> 
</asp:GridView> 

Page 2 - С SqlDataSource и параметром поле формы:

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="workoutID" DataSourceID="SqlDataSource1"> 
    <Columns> 
     <asp:BoundField DataField="workoutID" HeaderText="workoutID" InsertVisible="False" ReadOnly="True" SortExpression="workoutID" /> 
     <asp:BoundField DataField="workoutTitle" HeaderText="workoutTitle" SortExpression="workoutTitle" /> 
     <asp:BoundField DataField="UserID" HeaderText="UserID" SortExpression="UserID" /> 
     <asp:BoundField DataField="description" HeaderText="description" SortExpression="description" /> 
    </Columns> 
</asp:GridView> 
</td> 
<td> 
    <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ 

    ConnectionStrings:SQL2008R2_504887_golivefitnesConnectionString %>" SelectCommand="workout_testing" SelectCommandType="StoredProcedure"> 
     <SelectParameters> 
      <asp:FormParameter FormField="Hiddenfield1" Name="workoutID" Type="Int32" /> 
     </SelectParameters> 
    </asp:SqlDataSource> 

ответ

0

Как насчет другой подход? Обрабатывать событие RowCommand в GridView на вашей первой странице:

<asp:GridView ID="GridView2" runat="server" AutoGenerateColumns="False" 
    DataKeyNames="workoutID" DataSourceID="SqlDataSource5" 
    OnRowCommand="GridView2_RowCommand"> 

Удалить скрытое, установите workoutID как CommandArgument для вашей кнопки, и удалить атрибут PostBackUrl:

<asp:Button ID="Button1" runat="server" Text="Button" 
    CommandArgument='<%# Eval("workoutID") %>' /> 

Используйте что RowCommand событие набивать значение workerID в переменную Session:

protected void GridView2_RowCommand(Object sender, GridViewCommandEventArgs e) 
{ 
    int workoutID = int.Parse(e.CommandArgument.ToString()); 
    Session["selectedWorkoutID"] = workoutID; 
} 

Затем на другой странице Ставить что FormParameter к SessionParameter:

<asp:SessionParameter Name="workoutID" SessionField="selectedWorkoutID" 
    Type="Int32" />