Gridview - 数据绑定方法(如Eval(),XPath()和Bind())只能在数据绑定控件的上下文中使用

时间:2014-04-10 19:22:41

标签: asp.net

问题来自:

double dItemPremium =(Eval(" Premium")!= DBNull.Value)? (双)(Eval(" Premium")):0;

我需要帮助改变它。

我正在使用Gridview。

protected void dgCustomer_DataBound(object sender, System.EventArgs e)
    {
            Label pLabel = new Label();
            double dItemPremium = (Eval("Premium")!= DBNull.Value) ? (double)(Eval("Premium")) : 0;
            pLabel.Text = dItemPremium.ToString("0.00");
            dTotal_m += dItemPremium;

        dgCustomer.HeaderRow.TableSection = TableRowSection.TableHeader;
        dgCustomer.FooterRow.TableSection = TableRowSection.TableFooter;
        dgCustomer.FooterRow.Controls.Add(pLabel);

    }


    protected void dgCustomer_RowCreated(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.DataRow)
        { 

        dTotal_m += Convert.ToDouble(DataBinder.Eval(e.Row.DataItem,"Premium"));

        }
        else if (e.Row.RowType == DataControlRowType.Footer)
        {
            e.Row.Cells[0].Text = "Totals:";
            e.Row.Cells[1].Text = dTotal_m.ToString("0.00");

            e.Row.Cells[1].HorizontalAlign = HorizontalAlign.Right;
            e.Row.Font.Bold = true;
        }
    }

在HTML中,我使用了

 <asp:TemplateField>
                        <ItemTemplate>
                            <%#DataBinder.Eval(DataItem,"Premium")%></ItemTemplate>
                        <HeaderTemplate>
                            Premium Amount Paid</HeaderTemplate>
                    </asp:TemplateField>

我添加了DataBinder和DataItem,但仍然没有。

谢谢!

2 个答案:

答案 0 :(得分:0)

您可以使用控件访问代码中的绑定值。 Eval,Bind等方法用于将值绑定到控件。有许多方法可以在代码bebind中访问绑定值,其中一种是

e.Row.Cells[0].Text

另一个是在Label中加入绑定值并像

一样访问它
string tempstr=((Label)dgCustomer.Rows[e.RowIndex].Cells[<cell_number>].FindControl("Label_ID")).Text;

答案 1 :(得分:0)

万一有人遇到此问题,这是另一种解决方案:将aspx文件从<%#更改为<%=

<ItemTemplate>
   <%= DataBinder.Eval(DataItem,"Premium")%></ItemTemplate>
<HeaderTemplate>