【问题标题】:problem binding gridview 's bound columns datafield using the column name of my datatable使用我的数据表的列名绑定 gridview 的绑定列数据字段的问题
【发布时间】:2009-09-03 21:56:51
【问题描述】:

我正在使用我的数据表的列名将我的 gridview 的绑定列与数据字段绑定。问题是我们有一个场景,我们需要输入一个文本,其中数据字段是 int 值为 0。我看不到任何解决方法。有什么简单的方法吗?

【问题讨论】:

    标签: asp.net gridview


    【解决方案1】:

    如果您不喜欢在您的 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 ,其中包含所有数据绑定代码。我很确定在性能方面它们几乎是相同的,如果你启用了视图状态,它们可能会产生文字控制的开销。确保在不需要时关闭视图状态。

    【讨论】:

      【解决方案2】:

      如果这是 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();
        }
      }
      

      【讨论】:

        猜你喜欢
        • 2012-05-10
        • 2016-03-12
        • 2013-12-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多