各位大虾,请问如何在GridView控件查找不到任何数据的情况下依然显示表头和利用CommandField生成的编辑按钮。我想实现的功能是,在GridView查不到任何数据的情况下,依然可以显示表头,还有CommandField生成的编辑按钮。再点击“编辑”后,可以增加新的数据多谢,我在线等!!!

解决方案 »

  1.   

    关注。
    我现在在用GridView,也是这样,空行时连头也不见了,就只有个可以设置空行的属性,有个鸟用啊。
      

  2.   

    你可以用
    <asp:GridView ID="GridView1" runat="server">
    <EmptyDataTemplate>
           这里加你的代码
    </EmptyDataTemplate>
    </asp:GridView>
      

  3.   

    这个问题网上问了很多次了.解决方法是帮定一个datatable .呵呵。救急呀...显示不了的.除非绑定个空的datatable.
     DataTable currentTable = new DataTable();
            DataColumn id = new DataColumn();
            id.ColumnName = "ID";
            DataColumn jobno = new DataColumn();
            jobno.ColumnName = "JobNo";
            currentTable.Columns.Add(jobno);
            currentTable.Columns.Add(id);
            DataRow row = currentTable.NewRow();
            row["JobNo"] = "";
            currentTable.Rows.Add(row);
            GridView1.DataSource = currentTable;
            GridView1.DataBind();
    这样就可以了。..........................
      

  4.   

    请问应该加什么代码?
    我需要一个CommandFiled生成的编辑按钮,2列数据,姓名和性别?
      

  5.   

    antiking(Q狼E行) 大大的我看的不是很明白,我原来的是DataSourceID="SqlDataSource2",现在GridView1.DataSource = currentTable了,如何去连接数据库?请指教,多谢
      

  6.   

    你可能是在绑定的时候如下:
    if DataTable.Rows.Count <> 0 then
    绑定
    end if所以出现没有数据的时候什么都没有了,其实没有必要,没有数据的时候也直接绑定,这样它自然就显示出表头了.
      

  7.   

    SqlDataSource2.DataSource=datatable;
    这个你可以看懂吧.
      

  8.   

    我的GridView是自己绑定的,每一列都是用BoundField绑定到相应的表的列上的。例如
    <asp:BoundField DataField="member" HeaderText="成员姓名" />
      

  9.   

    antiking(Q狼E行) 大大,我还是很晕
      

  10.   

    对呀.我知道你是自动绑定的.我的意思是你按绑定显示的列做个datatable.插入空数据当你查询时数据为空就绑定datatable.
      

  11.   

    antiking(Q狼E行)大大,晕完了,你能给个详细的代码吗?多谢啊
      

  12.   

    Cate表两个字段:id自动增加,Title为输入,例子<%@ Page Language="VB" Debug=true Trace="true"%><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><script runat="server">
        Protected Sub add_Click(ByVal sender As Object, ByVal e As System.EventArgs)
            AccessDataSource1.InsertCommand = "INSERT INTO Cate (Title) VALUES (@Tt)"
            AccessDataSource1.InsertParameters.Add("@Tt", CType(GridView1.Controls(0).Controls(0).Controls(0).FindControl("AddTitle"), TextBox).Text)
            AccessDataSource1.Insert()
        End Sub
    </script><html xmlns="http://www.w3.org/1999/xhtml" >
    <head runat="server">
    <title>无标题页</title>
    </head>
    <body>
    <form id="form1" runat="server"><asp:GridView ShowFooter=true ID="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="id" DataSourceID="AccessDataSource1">
    <Columns>
    <asp:BoundField DataField="id" HeaderText="id" InsertVisible="False" ReadOnly="True"
    SortExpression="id" />
    <asp:BoundField DataField="Title" HeaderText="Title" SortExpression="Title" />
    </Columns>
    <EmptyDataTemplate>   
    <asp:TextBox ID=AddTitle runat=server></asp:TextBox>   
    <asp:button ID=add runat=server Text=add OnClick="add_Click" />
    </EmptyDataTemplate>
    </asp:GridView>
    <asp:AccessDataSource ID="AccessDataSource1" runat="server" DataFile="~/App_Data/Fav.mdb"
    SelectCommand="SELECT [id], [Title] FROM [Cate]" >         </asp:AccessDataSource> 
    </form>
    </body>
    </html>
      

  13.   

    还有个方法一般人我不告诉他......
    select top 1 字段1='',字段2='' from table.
    这样也可以的。......能看懂么.把这个跟AccessDataSource1绑定.........
      

  14.   

    net_lover(孟子E章) 大大的方法我看了,很接近我的目标了,不过加不了数据,提示要声明@Tt
      

  15.   

    antiking(Q狼E行) 大大,还是给我个完整的源代码可以吗?我晕的厉害,不知道怎么用,你的意思我理解了
      

  16.   

    SqlConnection conn = new SqlConnection(ConfigurationManager.AppSettings["connectionString"]);
        protected void Page_Load(object sender, EventArgs e)
        {
            SqlDataSource1.ConnectionString = conn.ConnectionString  ;
            string sql = "select top 1 jobno='',jobfixno='' from jobse";
            sql2 = "select * from jobse where jobno='" + TextBox.Text + "'";
            SqlDataAdapter myda = new SqlDataAdapter(sql2.conn);
            conn.Open();
            DataTable dt = new DataTable();
            myda.Fill(dt);
            if (dt.Rows.Count > 0)
            {
                SqlDataSource1.SelectCommand = sql2;
            }
            else
            {
                SqlDataSource1.SelectCommand = sql1;
            }
            conn.Close();
           
            
        }
      

  17.   

    上面的代码是调试过的。数据库Aeescc测试的。建立一个 Access表,直接拷贝代码即可