2017-11-25 211 views
0

我有一個網格視圖控件在我的頁面中索引所有Lecture Contents。我添加了一個Text Box控件和一個Link Button。但對於沒有內容的講座,Grid View沒有出現。 已經嘗試了很多參考文獻,因此頁腳已經出現,但我無法在頁腳中使用Controls插入數據。 我的主要目標是使Controls在兩種情況下表現相同。 這是網格視圖代碼。如何使網格視圖頁腳控件可見,如果網格視圖爲空

`<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" EmptyDataText="No Contents found for this lecture." ShowFooter="true" HeaderStyle-Wrap="false" Width="70%" CssClass="Grid" AlternatingRowStyle-CssClass="alt" PagerStyle-CssClass="pgr" OnSelectedIndexChanged="GridView1_SelectedIndexChanged"> 
    <AlternatingRowStyle BackColor="White" /> 
    <Columns> 
     <asp:TemplateField HeaderText=" LectureID " SortExpression="lecc_id"> 
     <ItemTemplate> 
      <asp:Label ID="lbllecc_id" runat="server" Text='<%# Bind("lecc_id") %>'></asp:Label> 
     </ItemTemplate> 
     <FooterTemplate> 
      <asp:Label ID="lbllecc_id" runat="server" T`enter code here`ext="Create New"> 
    </asp:Label> 
     </FooterTemplate> 
     </asp:TemplateField> 
     <asp:TemplateField HeaderText=" Content " SortExpression="lecc_contents"> 
      <EditItemTemplate> 
       <asp:TextBox ID="tblecc_contents" runat="server" Text='<%# Bind("lecc_contents") %>'></asp:TextBox> 
      </EditItemTemplate> 
      <ItemTemplate> 
       <asp:Label ID="lbllecc_contents" runat="server" Text='<%# Bind("lecc_contents") %>'></asp:Label> 
      </ItemTemplate> 
      <FooterTemplate> 
       <asp:TextBox ID="txtcontent" runat="server"></asp:TextBox> 
      <asp:RequiredFieldValidator ID="rfcontent" runat="server" ErrorMessage="Content field cannot be blank." ControlToValidate="txtcontent" Text="*" ForeColor="Red"></asp:RequiredFieldValidator>           
      <asp:LinkButton ID="createcontent" runat="server" OnClick="createcontent" CssClass="btn-sm btn-default">Insert Content</asp:LinkButton> 
     </FooterTemplate> 
     </asp:TemplateField> 
    </Columns> 
    </EmptyDataTemplate> 
    <FooterStyle BackColor="#CCCC99" /> 
    <HeaderStyle BackColor="#6B696B" Font-Bold="True" ForeColor="White" Font-Size="17px" /> 
    <PagerStyle BackColor="#F7F7DE" ForeColor="Black" HorizontalAlign="Right" /> 
    <RowStyle BackColor="#F7F7DE" Font-Bold="False" Font-Size="14px" /> 
    <SelectedRowStyle BackColor="#CE5D5A" Font-Bold="True" ForeColor="White" /> 
    <SortedAscendingCellStyle BackColor="#FBFBF2" /> 
    <SortedAscendingHeaderStyle BackColor="#848384" /> 
    <SortedDescendingCellStyle BackColor="#EAEAD3" /> 
    <SortedDescendingHeaderStyle BackColor="#575357" /> 
</asp:GridView>` 

和網格視圖功能的代碼。

`protected void Page_Load(object sender, EventArgs e){ 
if (Session["fac_username"] != null) 
{ 
    String username = Convert.ToString(Session["fac_username"]); 
    if (!IsPostBack) 
    { 
     BindGridViewData(); 
    } 
} 
else 
{ 
    Response.Redirect("~/Account/Login.aspx"); 
} 
}protected void BindGridViewData(){ 
int lecID = Convert.ToInt32(Session["lecID"]); 
GridView1.DataSource = DataAccessLayer.getAllContents(lecID); 
GridView1.DataBind();}   protected void GridView1_SelectedIndexChanged(object sender, EventArgs e){ 
      } 
protected void createcontent(object sender, EventArgs e){ 
int lecID = Convert.ToInt32(Session["lecID"]); 
con.Open(); 
SqlCommand command = new SqlCommand("insert into uni_lect_content(lecc_id, lecc_contents) values(@lecc_id, @lecc_contents)", con); 
command.Parameters.AddWithValue("@lecc_id", lecID); 
command.Parameters.AddWithValue("@lecc_contents", ((TextBox)GridView1.FooterRow.FindControl("txtcontent")).Text); 
command.ExecuteNonQuery(); 
con.Close(); 
lblmsg.Text = "New Course Successfully Created..!";}` 

DataAccessLayer類的getAllConents()方法在這裏。

`public class AllContents 
{ 
    public long lecc_id { get; set; } 
    public string lecc_contents { get; set; } 
} 
public class DataAccessLayer 
{ 
    public static List<AllContents> getAllContents(int lecID){ 
     List<AllContents> listAll = new List<AllContents>(); 
     string cs = ConfigurationManager.ConnectionStrings["ILMSConnectionString"].ConnectionString; 
     using (SqlConnection con = new SqlConnection(cs)) 
     { 

      SqlCommand com = new SqlCommand("select lecc_id, lecc_contents from uni_lect_content, uni_lectures, uni_offered_courses where uni_lect_content.lecc_id = uni_lectures.lec_id and uni_lectures.cours_offer_id = uni_offered_courses.cours_offer_id and lecc_id = '"+lecID+"'", con); 
      con.Open(); 
      SqlDataReader rdr = com.ExecuteReader(); 
      while (rdr.Read()) 
      { 
       AllContents obj = new AllContents(); 
       obj.lecc_id = Convert.ToInt32(rdr["lecc_id"]); 
       obj.lecc_contents = rdr["lecc_contents"].ToString(); 
       listAll.Add(obj); 

      } 
     } 
    return listAll; 
}` 

幫我脫離這種情況。 在此先感謝。

回答

0

前端GRDIVIEW

<asp:GridView ID="grdview" ShowFooter="true" OnRowEditing="grdview_RowEditing" OnRowCancelingEdit="grdview_RowCancelingEdit" OnRowCommand="grdview_RowCommand" OnRowUpdating="grdview_RowUpdating" runat="server" AutoGenerateColumns="false"> 
        <Columns> 
         <asp:TemplateField HeaderText="SR No."> 
          <ItemTemplate> 
           <%#Container.DataItemIndex+1 %> 
           <asp:Label ID="lblid" runat="server" Text='<%#Eval("Id") %>'></asp:Label> 
          </ItemTemplate> 
         </asp:TemplateField> 
         <asp:TemplateField ItemStyle-HorizontalAlign="Center" HeaderStyle-HorizontalAlign="Center" HeaderText="Emp Name"> 
          <ItemTemplate> 
           <asp:Label ID="elblempname" runat="server" Text='<%#Eval("EmpName") %>'></asp:Label> 
          </ItemTemplate> 
          <EditItemTemplate> 
           <asp:TextBox ID="etxtempname" runat="server" Text='<%#Eval("EmpName") %>'></asp:TextBox> 
          </EditItemTemplate> 
          <FooterTemplate> 
           <asp:TextBox ID="ftxtempname" runat="server" ></asp:TextBox> 
          </FooterTemplate> 
         </asp:TemplateField> 
         <asp:TemplateField ItemStyle-HorizontalAlign="Center" HeaderStyle-HorizontalAlign="Center" HeaderText="Emp No"> 
          <ItemTemplate> 
           <asp:Label ID="elblempno" runat="server" Text='<%#Eval("EmpNo") %>'></asp:Label> 
          </ItemTemplate> 
          <EditItemTemplate> 
           <asp:TextBox ID="etxtempno" runat="server" Text='<%#Eval("EmpNo") %>'></asp:TextBox> 
          </EditItemTemplate> 
          <FooterTemplate> 
           <asp:TextBox ID="ftxtempno" runat="server" ></asp:TextBox> 
          </FooterTemplate> 
         </asp:TemplateField> 
         <asp:TemplateField ItemStyle-HorizontalAlign="Center" HeaderStyle-HorizontalAlign="Center" HeaderText="Email"> 
          <ItemTemplate> 
           <asp:Label ID="elblempemail" runat="server" Text='<%#Eval("Email_Id") %>'></asp:Label> 
          </ItemTemplate> 
          <EditItemTemplate> 
           <asp:TextBox ID="etxtempemail" runat="server" Text='<%#Eval("Email_Id") %>'></asp:TextBox> 
          </EditItemTemplate> 
         <FooterTemplate> 
           <asp:TextBox ID="ftxtempemail" runat="server" ></asp:TextBox> 
          </FooterTemplate> 
         </asp:TemplateField> 
         <asp:TemplateField ItemStyle-HorizontalAlign="Center" HeaderStyle-HorizontalAlign="Center" HeaderText="Age"> 
          <ItemTemplate> 
           <asp:Label ID="elblempage" runat="server" Text='<%#Eval("Age") %>'></asp:Label> 
          </ItemTemplate> 
          <EditItemTemplate> 
           <asp:TextBox ID="etxtempage" runat="server" Text='<%#Eval("Age") %>'></asp:TextBox> 
          </EditItemTemplate> 
          <FooterTemplate> 
           <asp:TextBox ID="ftxtempage" runat="server" ></asp:TextBox> 
           <asp:Button ID="btnAdd" CommandName="AddNew" runat="server" Text="Add" /> 
          </FooterTemplate> 
         </asp:TemplateField> 
</Columns> 
       </asp:GridView> 

後端代碼

ds.Tables[0].Rows.Add(ds.Tables[0].NewRow()); 
         grdview.DataSource = ds; 
         grdview.DataBind(); 
         int columncount = grdview.Rows[0].Cells.Count; 
         grdview.Rows[0].Cells.Clear(); 
         grdview.Rows[0].Cells.Add(new TableCell()); 
         grdview.Rows[0].Cells[0].ColumnSpan = columncount; 
         grdview.Rows[0].Cells[0].Text = "No Records Found"; 
if (e.CommandName == "AddNew") 
     { 
      TextBox ftxtempname = (TextBox)grdview.FooterRow.FindControl("ftxtempname"); 
      TextBox ftxtempno = (TextBox)grdview.FooterRow.FindControl("ftxtempno"); 
      TextBox ftxtempemail = (TextBox)grdview.FooterRow.FindControl("ftxtempemail"); 
      TextBox ftxtempage = (TextBox)grdview.FooterRow.FindControl("ftxtempage"); 
      using (con) 
      { 
       SqlCommand cmd = new SqlCommand("usp_add_upd_emptb", con); 
       cmd.CommandType = CommandType.StoredProcedure; 
       cmd.Parameters.AddWithValue("@EmpName", ftxtempname.Text); 
       cmd.Parameters.AddWithValue("@EmpNo", ftxtempno.Text); 
       cmd.Parameters.AddWithValue("@Desig", ftxtempage.Text); 
       cmd.Parameters.AddWithValue("@Email", ftxtempemail.Text); 

       con.Open(); 
       cmd.ExecuteNonQuery(); 
} 

這是一個完整的工作代碼。

+0

我已經通過這樣的例子,但對於我的特殊情況,我無法實現邏輯。 @Vipin你能否爲我解釋一下,記住我的代碼。請。 。 –

+0

@StartarJamali如果這還不能解決您的問題,請不要將其標記爲已接受。 – AsifAli72090

+0

好的。 @ Asif.Ali。 .. 我可以問你的解決方案..? 我需要它緊急。 。 –