0

我正在尝试在 grid_HtmlRowCreated 方法内的 C# 代码中使用来自 .aspx 的参数。我尝试通过在 .aspx 中的标签中设置文本,然后从标签中获取该文本。

它起作用了:aspx

<dx:ASPxLabel runat="server"  ID="cl" Text="Some text"/>

...

protected void grid_HtmlRowCreated(object sender, ASPxGridViewTableRowEventArgs e)
    {
        if (e.RowType == DevExpress.Web.ASPxGridView.GridViewRowType.Data)
        {
                   ...
            string id;

            if (comments_grid != null && expIDControl != null)
            {
                id = ((DevExpress.Web.ASPxEditors.ASPxLabel)expIDControl).Text;      
                System.Windows.Forms.MessageBox.Show( id );
            }
    }

但是当我将值设置为:

<dx:ASPxLabel runat="server"  ID="cl" Text='<%# Eval("Id") %>'/>

然后 id 是空的,当我设置

<dx:ASPxLabel runat="server"  ID="cl" Text='<%# Eval("Id") %> + " test"'/>

那么 id 就是 <%# Eval("Id") %> test

谢谢你的任何想法...

编辑:这也有效,代码只需要在 HtmlRowPrepared 中,而不是在 HtmlRowCreated 中。多谢你们!

4

2 回答 2

0

您可以在将连接的类 (.aspx.cs) 上编写一个方法。

从记忆出发:

Text='<%# ConcatSomething (Eval("Id")  ,  "Peanut" ) %> '/>

进而

    public object ConcatSomething(object x , object y)
    {
        return Convert.ToString(x) + Convert.ToString(y);
    }

或许

    public object ConcatSomething(string x , string y)
    {
        return x + y;
    }

你必须玩它。我已经在 data_binding 上做了一千次。

臭味是“对象”的东西。如果你可能有一些空值(进来),你将不得不编码。

于 2013-05-15T19:16:57.453 回答
0

我刚刚从我当前的项目中复制了这个,我有相同的 Grid 和 Item 模板,正确的方法是:

<dx:ASPxLabel runat="server"  ID="cl" Text='<%# DataBinder.Eval(Container.DataItem, "Id") %>' />

问候

于 2013-05-15T19:30:47.823 回答