2014-09-22 63 views
1

我想從我的數據列表中看到和看不到我的文本框和標籤。我的數據專員用複選框完成。所以,我的意思是我有很多整合到數據庫的複選框。如何從數據列表中顯示文本框

我有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#程序員

+1

不要使用'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

+0

你介意告訴我更多細節嗎?因爲我是一個新手。 – 2014-09-22 10:03:18

回答

0

後:HiddenField id_access = (HiddenField)item.FindControl("id_access");

插件; var value_id_access = id_access.Text;

一些事情的其他值

+0

不確定該方法是否存在 – Rhumborl 2014-09-22 09:27:06

+0

thankyou @redIntent爲答案,但您的建議不存在。那麼,任何想法,任何人? – 2014-09-22 09:30:42

+0

我編輯我的帖子 – redIntent 2014-09-22 09:50:53

相關問題