2013-10-08 3 views
0

У меня есть сетка в одной странице, как показано ниже.Получить значение от Gridview на другой странице

<asp:GridView ID="gvDoctorList" runat="server" AutoGenerateColumns="False" DataSourceID="SqlDataSource1" 
          AllowPaging="True" AllowSorting="True" AutoGenerateEditButton="true" AutoGenerateDeleteButton="true"> 
          <Columns> 
           <asp:TemplateField> 
            <ItemTemplate> 
             <asp:CheckBox runat="server" ID="chk" OnCheckedChanged="chk_CheckedChanged" /> 
             <asp:Label runat="server" ID="lblPID" Visible="false" Text='<%# Eval("PatientId") %>'></asp:Label> 
            </ItemTemplate> 

           </asp:TemplateField> 

           <asp:BoundField DataField="PatientId" HeaderText="PatientId" SortExpression="PatientId" /> 
           <asp:BoundField DataField="firstname" HeaderText="firstname" SortExpression="firstname" /> 
           <asp:BoundField DataField="lastname" HeaderText="lastname" SortExpression="lastname" /> 

           <asp:BoundField DataField="sex" HeaderText="sex" SortExpression="sex" /> 

          </Columns> 
         </asp:GridView> 
         <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:MyDatabaseConnectionString %>" 
          SelectCommand="SELECT [PatientId],[firstname], [lastname], [sex] FROM [PatientDetails]"></asp:SqlDataSource> 

Теперь, когда проверка пользователя на CheckBox то же время я хочу PatientId из GridView в другую страницу и дальше, я хочу, чтобы вставить PatientId в SQL таблицу.

Спасибо много, если кто-то дать мне код

* ОБНОВЛЕНО :: *

Мой Page_Load код

if (!IsPostBack) { 
foreach (GridViewRow row in gvDoctorList.Rows) 
{ 
    CheckBox chk = (CheckBox)row.FindControl("chk"); 
    if (chk.Checked) 
    { 
    string patientId = ((Label)row.FindControl("lblPID")).Text; 
    string exam = ((Button)sender).Text; 
    Session[patientId] = patientId; 
    } 
    } 
} 
+2

Поместите этот родительский идентификатор в переменную сеанса и используйте его на следующей странице/в качестве альтернативы вы можете передать его как строку запроса при переходе на другую страницу :) – Rex

+0

где поставить сеанс в pageload? – Pratik

+0

вы можете использовать сеанс использования в любом месте, где в соответствии с вашим использованием – Rex

ответ

1

Почему вы не попробуете это?

Session ["PatientID"] = YoureGridView.SelectedRow.Cells[indexOfPatientID].Text; 

этим значение PatientID находится в сессии при переходе на другую страницу, которую вы можете получить данные в сеансе с помощью

Int PatientID = Convert.Toint16(Session["PatientID"]); 

или если его строка

string PatientID = Session["PatientID"].ToString(); 

Ну im guessing, потому что вы не предоставили достаточно информации, но вот как я код, если я собираюсь передать данные на другую веб-страницу

для вставки в SQL и предполагая его TSQL я использовать что-то вроде этого

 SqlCommand Update = new SqlCommand(); 
     Update.Connection = YourConnection; 
     Update.CommandType = CommandType.StoredProcedure; 
     Update.CommandText = "usp_YoureStoredProcedure"; 
     Update.Parameters.AddWithValue("@id", Convert.Toint16(Session["PatientID"])); //the convert varies on what data type you are using this is just an example 

Ну это опять же только примеры, если вы хотите получить более окончательный ответ попробуйте отправить или говорит нам больше.

+0

, но когда я пытаюсь поставить сессию ["PatientID"] = YoureGridView.SelectedRow.Cells [indexOfPatientID] .Text; – Pratik

+0

Я не смог получить .Cells [indexOfPatientID] .Text ... так что может быть проблема, можете ли вы, пожалуйста, дайте мне знать? – Pratik

+0

-_- Конечно, это не сработает, вам нужно вставить в индекс [indexOfPatientID] индекс вашего идентификатора пациента, например [1], [2] – user2705620

Смежные вопросы