使用我的数据表的列名绑定gridview的绑定列datafield的问题

时间:2009-09-03 21:56:51

标签: asp.net gridview

我使用数据表的列名将dataview的绑定列与datafield绑定。问题是我们有一个场景我们需要放入一个文本,其中数据字段为int,值为0.我看不到任何解决方法。有没有简单的方法呢?

2 个答案:

答案 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();
  }
}