我使用数据表的列名将dataview的绑定列与datafield绑定。问题是我们有一个场景我们需要放入一个文本,其中数据字段为int,值为0.我看不到任何解决方法。有没有简单的方法呢?
答案 0 :(得分:2)
如果您不喜欢在aspx页面中使用内联代码,David建议在其中创建一个带有文字控件的模板并实现OnDataBinding事件:
例如,在您的网格中,您的字段包含以下模板:
<asp:TemplateField HeaderText="Your Header Name">
<ItemTemplate>
<asp:Literal runat="server" ID="litYourCustomField" OnDataBinding="litYourCustumField_DataBinding"></asp:Label>
</ItemTemplate>
</asp:TemplateField>
然后在代码中实现OnDataBinding:
protected void litYourCustomField_DataBinding(object sender, System.EventArgs e)
{
Literal lit = (Literal)(sender);
int yourInt = Convert.ToInt32(Eval("YourNumber"));
lit.Text = (yourInt == 1) ? "It's a 1" : "It's something else";
}
我更喜欢这种方法用于内联代码,因为它不会在您的aspx页面中放置任何代码。我通常在我的.cs文件中定义了一个#region,它通过数据绑定代码完成。我非常确定性能明智,它们几乎完全相同,除非你有视图状态启用可能是文字控件的开销。确保在不需要时关闭viewstate。
答案 1 :(得分:0)
如果这是ASP.Net,您可以将其设为Template列并执行以下操作:
<ItemTemplate>
<%# MyConversionFunction(Convert.ToInt32(DataBinder.Eval(Container.DataItem, "IntegerFieldName"))) %>
</ItemTemplate>
protected string MyConversionFunction(int ValueToCheck)
{
if(ValueToCheck.ToString() == "0")
{
return "SomeText";
}
else
{
return SomeValue.ToString();
}
}