2014-01-28 43 views
0

我想從我的列表視圖中提取信息。我不知道該怎麼做。如何從列表視圖中獲取信息

我有4個來自Doctor Table的listview(Doctor_Name)的字段,來自Appointement表的可用Appointement的日期和時間。我需要從Doctor表中截取doctor_Id。我們可以在列表視圖中隱藏一個字段嗎?列表視圖是否可以查看LinqDataSource中的所有字段,還是僅查看我們在屏幕上定義的字段?

這裏是Appointement.aspx

 <asp:ListView ID="ListView1" runat="server" DataKeyNames="aptId" 
     DataSourceID="LinqDataSource1" InsertItemPosition="LastItem" > 
      <AlternatingItemTemplate> 
       <tr style=""> 
        <td> 
         <asp:Label ID="doctorNameLabel" runat="server" 
          Text='<%# Eval("Doctor.Doctor_Name") %>' /> 
        </td> 
        <td> 
         <asp:Label ID="dateAptLabel" runat="server" 
         Text='<%# Eval("dateApt", "{0:dd/MM/yyyy}") %>' /> 
        </td> 
        <td> 
         <asp:Label ID="hourAptLabel" runat="server" 
         Text='<%# Eval("hourApt", @"{0:hh\:mm}") %>' /> 
        </td> 

        <td> 
         <asp:CheckBox id="MyCheckBox" runat="server" 
          value='<%# Eval("rdvId") %>' 
          AutoPostBack="true" 
          OnCheckedChanged="Check_Clicked" /> 
        </td> 
       </tr> 
      </AlternatingItemTemplate> 

這裏是Appointement.aspx.cs

protected void Appointement_Update() 
{ 
    int keyAptId = 0; 
    int indxChkBox = 0; 
    string sDateApt = ""; 
    string sHourApt = ""; 

    foreach (ListViewDataItem item in ListView1.Items) 
    { 
     CheckBox MyCheckBox = (CheckBox)item.FindControl("MyCheckBox"); 
     if (MyCheckBox.Checked) 
     { 
      keyAptId = Convert.ToInt32(ListView1.DataKeys[item.DataItemIndex].Value); 


      Session["doctorName"] = ; <== I want to extract the doctor name from the listview 
      Session["doctorId"] = ; <== I want to extract the doctor ID 


      Label myAptDate = (Label)item.FindControl("dateAptLabel"); 
      sDateApt = myAptDate.Text; 
      Session["dateApt"] = sDateApt; 

      Label myAptHour = (Label)item.FindControl("hourAptLabel"); 
      sHourApt = myAptHour.Text; 
      Session["hourApt"] = sHourApt; 
     } 
    } 

這裏是Appointement.dbml

Appointement表(aptId,的clientId,doctorId ,dateApt,timeApt,IsAvailable) Doctor Table(Id,doctor_name)

謝謝你的建議。

下面介紹如何通過添加hiddenField來實現。

 <asp:ListView ID="ListView1" runat="server" DataKeyNames="aptId" 
      DataSourceID="LinqDataSource1" InsertItemPosition="LastItem" > 
      <AlternatingItemTemplate> 
       <tr style=""> 
        <td> 
         <asp:HiddenField ID="lblDoctorId" runat="server" 
         Value='<%# Eval("Doctor.Id") %>' /> 
        </td> 
        <td> 
         <asp:Label ID="doctorNameLabel" runat="server" 
          Text='<%# Eval("Doctor.Doctor_Name") %>' /> 
        </td> 
        <td> 
         <asp:Label ID="dateAptLabel" runat="server" 
          Text='<%# Eval("dateApt", "{0:dd/MM/yyyy}") %>' /> 
        </td> 
        <td> 
         <asp:Label ID="hourAptLabel" runat="server" 
          Text='<%# Eval("hourApt", @"{0:hh\:mm}") %>' /> 
        </td> 

        <td> 
         <asp:CheckBox id="MyCheckBox" runat="server" 
          value='<%# Eval("aptId") %>' 
          AutoPostBack="true" 
          OnCheckedChanged="Check_Clicked" /> 
        </td> 
       </tr> 
      </AlternatingItemTemplate> 

      <ItemTemplate> 
       <tr style=""> 
        <td> 
         <asp:HiddenField ID="lblDoctorId" runat="server" 
           Value='<%# Eval("Doctor.Id") %>' /> 
        </td> 
        <td> 
         <asp:Label ID="DoctorNameLabel" runat="server" 
         Text='<%# Eval("Doctor.Doctor_Name") %>' /> 
        </td> 
        <td> 
         <asp:Label ID="dateAptLabel" runat="server" 
         Text='<%# Eval("dateApt", "{0:dd/MM/yyyy}") %>' /> 
        </td> 
        <td> 
         <asp:Label ID="hourAptLabel" runat="server" 
         Text='<%# Eval("hourApt", @"{0:hh\:mm}") %>' /> 
        </td> 

        <td> 
         <asp:CheckBox id="MyCheckBox" runat="server" 
          value='<%# Eval("aptId") %>' 
          AutoPostBack="true" 
          OnCheckedChanged="Check_Clicked"/> 
        </td> 
       </tr> 
      </ItemTemplate> 

Here is how it is coming out on the screen: 
Doctor_Name dateApt HourApt  choice 
       DoctorA 31/01/2014 09:00 checkbox 
       DoctorB 31/01/2014 09:00 checkbox 
       DoctorC 31/01/2014 09:00 checkbox 

if I removed the hiddenfield from the ItemTemplate it is coming out like this 
Doctor_Name dateApt  HourApt  choice 
DoctorA  31/01/2014 09:00  checkbox 
       DoctorB 31/01/2014  09:00  checkbox 
DoctorC  31/01/2014 09:00  checkbox 

任何想法如何解決它?

回答

0

你已經從ListView獲取數據:

Label myAptDate = (Label)item.FindControl("dateAptLabel"); 
sDateApt = myAptDate.Text; 

相同的前提下工作與儲存在這些UI元素的任何其他數據。例如,你想要得到的「名稱」屬性,這是已經可用:

Label myName = (Label)item.FindControl("doctorNameLabel"); 
sName = myName.Text; 

如果你也想從UI中的「ID」,那麼你就需要將其先存儲在UI。它可以像隱藏字段一樣簡單:

<asp:Hidden ID="doctorIDLabel" runat="server" 
      Value='<%# Eval("Doctor.ID") %>' /> 

然後,您可以繼續使用您已使用的相同技術從UI元素獲取其值。這些領域沒有什麼特別或不同之處,您現有的技術將適用於所有這些領域。

+0

感謝您的意見。我添加了更改,但它出現在屏幕上missy檢查我的意見 – user3127986

+0

@ user3127986:它看起來像你添加一個'td'元素到你的數據行,但不是你的頁眉/頁腳行。你不需要一個新的'td'元素。只需將'asp:Hidden'放入任何現有的'td'元素中即可。 – David

+0

相關問題