【发布时间】:2009-09-03 21:56:51
【问题描述】:
我正在使用我的数据表的列名将我的 gridview 的绑定列与数据字段绑定。问题是我们有一个场景,我们需要输入一个文本,其中数据字段是 int 值为 0。我看不到任何解决方法。有什么简单的方法吗?
【问题讨论】:
我正在使用我的数据表的列名将我的 gridview 的绑定列与数据字段绑定。问题是我们有一个场景,我们需要输入一个文本,其中数据字段是 int 值为 0。我看不到任何解决方法。有什么简单的方法吗?
【问题讨论】:
如果您不喜欢在您的 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 ,其中包含所有数据绑定代码。我很确定在性能方面它们几乎是相同的,如果你启用了视图状态,它们可能会产生文字控制的开销。确保在不需要时关闭视图状态。
【讨论】:
如果这是 ASP.Net,您可以将其设为模板列并执行以下操作:
<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();
}
}
【讨论】: