如果网格视图为空,如何使网格视图页脚控件可见

时间:2017-11-25 10:03:51

标签: c# asp.net gridview visual-studio-2013

我的页面中有一个网格视图控件,用于索引所有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;
}`

帮助我摆脱这种情况。 提前致谢。

1 个答案:

答案 0 :(得分:1)

FRONT END 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();
}

这是一个完整的代码。

相关问题