我想從我的數據列表中看到和看不到我的文本框和標籤。我的數據專員用複選框完成。所以,我的意思是我有很多整合到數據庫的複選框。如何從數據列表中顯示文本框
我有2個主要數據。 1作爲標題,1作爲子標題,每個子標題都有許多複選框,稱爲訪問。每個訪問都有id_access(我將它保存到HiddenField'id_access'中),每個Header都有id_jenis(我將它保存到HiddenField'id_jenis_access'中)。如果訪問(複選框文本)顯示'其他'(id_access ='ACT5')並且標題顯示'其他'(id_jenis ='JO1'),則標籤Reaseon和Discribtion及其文本框將顯示。但我有問題。
這是我的形式
<asp:DataList ID="DataListTest" runat="server" OnPreRender="PreTes">
<ItemTemplate>
<table cellpadding="0" cellspacing="0">
<tr>
<td>
<asp:Label ID="lblHeader" runat="server"></asp:Label> <!-- Telephone, Bussines System -->
</td>
</tr>
<tr>
<td>
<asp:Label ID="lblsubheader" runat="server" /></td> <!-- Oracle, EPM, CRM (Muncul di Form) -->
</tr>
<tr>
<td>
<asp:HiddenField ID="id_jenis_access" runat="server" Value='<%Eval(idJenisAccess) %>' /> <!-- Output = JT1, JO1, JBS1 (ID_JENIS) -->
<asp:HiddenField ID="subhd" runat="server" Value='<%# Eval("sub_jenis") %>' /> <!-- Oracle, EPM, CRM (nama sub jenis) -->
<asp:HiddenField ID="id_access" runat="server" Value='<%# Eval("id_access") %>' /><!-- Output = ACT5, ACBS1 -->
<asp:HiddenField ID="hd" runat="server" Value='<%# Eval("nama_jenis") %>' /><!-- Output = Telephone, Bussines System -->
</td>
</tr>
<tr>
<td>
<asp:CheckBox ID="cbCountryName" runat="server" Text='<%# Eval("nama_access") %>' /> <!-- Output = Local, Handphone, Project -->
<asp:TextBox ID="testme" runat="server" Text="" Visible="false" /> <!-- Output = Textbox for all -->
</td>
</tr>
<tr>
<td><asp:Label ID="lblReason" runat="server" Visible="false" text="Reason : "/>
<asp:TextBox ID="txtReason" Text="Reason" runat="server" Visible="false" />
</td>
</tr>
<tr>
<td>
<asp:Label ID="lblDescription" runat="server" Visible="false" text="Description : "/>
<asp:TextBox ID="txtDescription" runat="server" Text="" Visible="false" />
</td>
</tr>
</table>
</ItemTemplate>
</asp:DataList>
這是我的代碼從數據庫中調用我的所有數據
private void ShowDataList()
{
conn.Open();
string sql = "Select access.id_access as 'id_access', access.nama_access, jenis_access.id_jenis_access as 'idJenisAccess' , "+
"jenis_access.nama_jenis_access as 'nama_jenis', sub_jenis.nama_sub_jenis as 'sub_jenis',sub_jenis.id_sub_jenis "+
"FROM access LEFT JOIN detil_access ON access.id_access = detil_access.id_access "+
"LEFT JOIN jenis_access ON detil_access.id_jenis_access = jenis_access.id_jenis_access "+
"LEFT JOIN sub_jenis ON detil_access.id_sub_jenis = sub_jenis.id_sub_jenis "+
"ORDER BY jenis_access.id_jenis_access";
SqlCommand cmd = new SqlCommand(sql, conn);
SqlDataAdapter adp = new SqlDataAdapter(cmd);
dt = new DataTable();
adp.Fill(dt);
DataListTest.DataSource = dt;
DataListTest.DataBind();
}
我的問題是我的lblReason,txtReason,lblDescribtion和txtDescription是不能顯示。 這是我在PreRender datalist上的代碼,我稱之爲PreTes。
protected void PreTes(object sender, EventArgs e)
{
string temp = "";
string subtemp ="";
foreach (DataListItem item in DataListTest.Items)
{
Label objLabel = (Label)item.FindControl("lblHeader");
Label subjenis = (Label)item.FindControl("lblsubheader");
TextBox t = (TextBox)item.FindControl("testme");
CheckBox objName = (CheckBox)item.FindControl("cbCountryName"); // Internet, User Folder, etc (the Access)
HiddenField objHD = (HiddenField)item.FindControl("hd"); // Telephone, Busines System
HiddenField subobjHD = (HiddenField)item.FindControl("subhd"); // Oracle, CRM , EPM
HiddenField id_access = (HiddenField)item.FindControl("id_access"); // ACT5, ACBS1, etc (code Access)
HiddenField id_jenis = (HiddenField)item.FindControl("hdIdJenisAccess"); // JTO1, JBS1, etc (code Jenis)
TextBox tr = (TextBox)item.FindControl("txtReason");
TextBox td = (TextBox)item.FindControl("txtDescription");
Label lblReason = (Label)item.FindControl("lblReason");
Label lblDescription = (Label)item.FindControl("lblDescription");
if (temp != objHD.Value)
{
temp = objHD.Value;
objLabel.Text = temp + "<br/>";
}
if (subtemp != subobjHD.Value)
{
subtemp = subobjHD.Value;
subjenis.Text = subtemp + "<br/>";
}
if (id_access.Value == "ACT5" && id_jenis.Value == "JO1")
{
lblDescription.Visible = true;
td.Visible = true;
lblReason.Visible = true;
tr.Visible = true;
}
}
那麼,我該怎麼辦?
FYI:我是一個新手,也C#程序員
不要使用'Page.PreRender'但['DataList.ItemDataBound'](http://msdn.microsoft.com/en-us/library/system.web .ui.webcontrols.datalist.itemdatabound(v = vs.110).aspx),只調用'ShowDataList' if(!Page.IsPostBack)'。 – 2014-09-22 09:25:23
你介意告訴我更多細節嗎?因爲我是一個新手。 – 2014-09-22 10:03:18