我想從我的列表視圖中提取信息。我不知道該怎麼做。如何從列表視圖中獲取信息
我有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
任何想法如何解決它?
感謝您的意見。我添加了更改,但它出現在屏幕上missy檢查我的意見 – user3127986
@ user3127986:它看起來像你添加一個'td'元素到你的數據行,但不是你的頁眉/頁腳行。你不需要一個新的'td'元素。只需將'asp:Hidden'放入任何現有的'td'元素中即可。 – David
在