日期:2014-05-18  浏览次数:20461 次

如何在运行期动态改变DataGrid的绑定列的对应字段(DataField)?
select   num,field1,field2   from   table1

将结果显示在DataGrid时,希望
当字段num的值> 1时,绑定列显示字段field1的值,否则显示field2字段的值.


如何实现?

谢谢!

------解决方案--------------------
在这个事件里写 ItemDataBound

int i=(int)DataBinder.Eval(e.Item.DataItem, "num ", "{0:d} ");
if(i> 1)
{
(string)DataBinder.Eval(e.Item.DataItem, "field1 ", "{0:d} ");

}
else
{
(string)DataBinder.Eval(e.Item.DataItem, "field2 ", "{0:d} ");
}
能个自定义列,把数据负值.
------解决方案--------------------
<asp:datagrid id= "DataGrid1 " runat= "server " AutoGenerateColumns= "False ">
<Columns>
<asp:TemplateColumn HeaderText= "au_id ">
<ItemTemplate>
<%# Convert.ToInt32(DataBinder.Eval(Container.DataItem, "num ") ) > 1 ? DataBinder.Eval(Container.DataItem, "field1 ") : DataBinder.Eval(Container.DataItem, "field2 ") %>
</ItemTemplate>
</asp:TemplateColumn>
</Columns>
</asp:datagrid>
------解决方案--------------------
使用SQL语句来解决更简单。

select num,
'myfiled '= case when num> 1 field1 else field2 end
from table1
------解决方案--------------------
sorry,

> > >

<%# (int)DataBinder.Eval(Container.DataItem, "num ") > 1 ? DataBinder.Eval(Container.DataItem, "field1 ") : DataBinder.Eval(Container.DataItem, "field2 ") %>