我想在ItemDataBound中判断一列的值如果大于一定的长度,就改写它的内容,代码如下:private void DataGrid1_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
{
    if(e.Item.ItemIndex!=-1)
{
   if(dataSet3.Tables[0].Rows[e.Item.ItemIndex]["Title"].ToString().Length>11)
  {
dataSet3.Tables[0].Rows[e.Item.ItemIndex]["Title"]="aa";
  }
                  }
}这样可以吗,我试着是赋不过去,也走这句话,但不起作用,title的值还是原值.
请教各位了

解决方案 »

  1.   

    楼主改 的可是数据源 的东西,能不能被改动还是问题,而且改动数据源后还得重新绑定的,其次也不能象你这样写
    应该是
    if(e.item.itemindex>=0)
    {
      if( e.item.cells[列序数].text.tostring().length>11 )
    {
      e.item.cells[].text= ''
    }
    }
      

  2.   

    我试过if(e.Item.ItemIndex!=-1),也试过if(e.item.itemindex>=0),都不行,也不知道哪出了问题!
      

  3.   

    if(e.Item.ItemType == ListItemType.AlternatingItem ){
        if(Convert.ToString(DataBinder.Eval(e.Item.DataItem,"title")).lenght> 11)
          {
           DataBinder.Eval(e.Item.DataItem,"title")) == "aaa";
          }
             }
      

  4.   

    寫html就可以了
    <asp:TemplateColumn HeaderText="名稱">
    <HeaderStyle Wrap="False" Width="30%"></HeaderStyle>
    <HeaderTemplate>
    名稱
    </HeaderTemplate>
    <ItemTemplate>
    <div title='<%# DataBinder.Eval(Container, "DataItem.BuiName") %>'><%# (DataBinder.Eval(Container, "DataItem.BuiName").ToString().Length>10?DataBinder.Eval(Container, "DataItem.BuiName").ToString().Substring(0,8) + "...":DataBinder.Eval(Container, "DataItem.BuiName")) %></div>
    </ItemTemplate>
    </asp:TemplateColumn>