我在使用DataGrid时用了分页,每页显示10条数据,固定了行高之类的, 
但在读数据库后如果数据少于10条的话,DataGrid显示就比较乱, 
于是为了显示比较公整,我在不满10条的时候就插入空白行, 
但我在DataGrid中又定义了模板列,它在空白行里也显示出来了 
我不希望此时它也显示出来, 
不知道该怎么解决或是有其他办法可以使DataGrid显示的比较整齐?

解决方案 »

  1.   

    你的空白行是怎么插入的,代码贴出来在你插入空白行的时候,对你插入的空白行的模板列里的按钮的visible属性设为false。只要能确定你所插入的行位置,就可以用findcontrol方法找到模板列的控件,并设置属性。这只是想法,没试过
      

  2.   

    你可以在itemdatabound事件里面把模板列的控件用findcontrol方法来定位然后隐藏或者disable调
      

  3.   

    private void dgDepart_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
    {
    if(e.Item.ItemIndex>=0)
    {
    LinkButton  myLbtn = (LinkButton)e.Item.Cells[9].Controls[0];
    LinkButton  myLbtn1 = (LinkButton)e.Item.Cells[8].Controls[0]; //e.Item.Attributes.Add("ondblclick","UpdateRec('"+e.Item.Cells[0].Text+"','"+e.Item.Cells[5].Text+"','"+e.Item.Cells[3].Text+"','"+e.Item.Cells[4].Text+"','"+e.Item.Cells[6].Text+"')");
    string phone = e.Item.Cells[0].Text;
    if((phone !=string.Empty)&&(phone != " "))
    myLbtn.Attributes.Add("onclick","return confirm('您确定移除该记录?');");
    else
    {
    myLbtn1.Visible = false;
    myLbtn.Visible = false;
    }
    }

    }我用过的
      

  4.   

    if(dataSet1.Tables["fenlei2"].Rows.Count!=0)
    {
    int cou=dataSet1.Tables["fenlei2"].Rows.Count%10; 
    if(cou!=0)
    {
    for(int a=cou;a<10;a++)
    {
    DataRow myDataRow=dataSet1.Tables["fenlei2"].NewRow();
    dataSet1.Tables["fenlei2"].Rows.Add(myDataRow);
                           
    }
    }
    DataGrid1.DataSource=dataSet1.Tables["fenlei2"];
    DataGrid1.DataBind();
    }
      

  5.   

    jimu8130(IBMT43):能不能把下面一段解释下啊
    private void dgDepart_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
    {
    if(e.Item.ItemIndex>=0)
    {
    LinkButton  myLbtn = (LinkButton)e.Item.Cells[9].Controls[0];
    LinkButton  myLbtn1 = (LinkButton)e.Item.Cells[8].Controls[0];
      

  6.   

    你不用添加空白行,你只要选中datagrid,然后在其属性里将height属性里将里面的值去掉,即不设任何高度,datagrid就不会因为数据少而出现你说的情况了。这样整齐的目的达到了。
    这样的设置会使datagrid根据记录数来显示其长度、即高度。
      

  7.   

    jimu8130(IBMT43) 
    我把你的程序改了
    public void DataGrid1_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
    {
    int c=e.Item.Cells.Count;
    CheckBox checkBox = (CheckBox)e.Item.Cells[0].Controls[0];
    checkBox.Visible=false; }
    但运行时老是说:指定的参数已超出有效值的范围。参数名: index
    不知如何解决?
      

  8.   

    楼上的我一开始除了DataGrid的高设置了,里面的高都没有设置啊
    可是显示的乱的啊
      

  9.   

    那么你使用下(CheckBox)e.Item.Cells[0].findcontrol("checkboxid")方法来定位控件!
      

  10.   

    好像不行啊
    我跟踪了提示是:checkBox<为定义的值>
              未将对象引用设置到对象的实例