【问题标题】:cant bind to datagrid?无法绑定到数据网格?
【发布时间】:2013-03-03 16:01:02
【问题描述】:
   <mesh:SecurePanel runat="server" ID="retentionInvoiceDue" WebMasters="true" Admins="true" style="text-align:left; font-size:small;">
            <a class="alert" ID="a1">Alerts</a>
            <br>
            <asp:Panel ID="panelToPromptRetentionInvoiceDue" runat="server" 
                CssClass="retentionLinksOnHomePage" Visible="true">
                <asp:DataGrid ID="datagridToPromptRetentionInvoiceDue" runat="server" 
                    AutoGenerateColumns="false" GridLines="None" ShowHeader="false">
                    <Columns>
                        <asp:TemplateColumn>
                            <ItemTemplate>
                                <span>Site
                                    <asp:LinkButton ID="promptRententionInvoiceLink" CommandArgument='<%# Bind ("id") %>' OnCommand="getSessionVariableForWorkSiteID" runat="server">
                                        <asp:Label id="labelBindfromHomeToInvoice" runat="server" Text="<%# Bind('Site_Name') %>"/>
                                    </asp:LinkButton>retention due for invoicing 
                                </span>
                            </ItemTemplate>
                        </asp:TemplateColumn>
                    </Columns>
                </asp:DataGrid>
             </asp:Panel>
    </mesh:SecurePanel>

在页面加载中的cs文件中:

  Context db = new Context();

        var allWorkSites =
            (from worksites in db.Work_Sites
             select worksites).Distinct().ToList();

        List<Object> chosenInvoicesForRetention = new List<Object>();

        foreach (Work_Site worksite in allWorkSites)
        {
            if (!worksite.Invoicing_Complete)
            {
                Invoice lastInvoice = worksite.Invoices.OrderBy(w => w.id).LastOrDefault();

                if (lastInvoice != null)
                {
                    if (lastInvoice.Invoice_Date < DateTime.Now.AddMonths(0 - worksite.Number_of_Months))
                    {
                        chosenInvoicesForRetention.Add(worksite);
                    }
                }

            }
        }

        if (chosenInvoicesForRetention.Count == 0)
        {
            panelToPromptRetentionInvoiceDue.Visible = false;
        }

        else
        {
            datagridToPromptRetentionInvoiceDue.DataSource = chosenInvoicesForRetention;
            datagridToPromptRetentionInvoiceDue.DataBind();
        }

    }

为什么我会收到错误消息: panelToPromptRetentionInvoiceDue & datagridToPromptRetentionInvoiceDue 不存在??


编辑: 我应该提一下,这段代码在我项目的不同页面上运行良好,我只是将它复制过来,因为我想再次使用它,但是更改它正在链接的表......为什么它会从一页而不是另一个?

还删除了安全面板,但仍然不起作用

有人有什么想法吗?将不胜感激

【问题讨论】:

  • &lt;mesh:SecurePanel&gt; 是什么,如果它是用户控制的,那么您是否可以在页面上正确注册它。?
  • 是的,它是一个用户控件

标签: asp.net datagrid


【解决方案1】:

我假设您需要使用 FindControl 来引用 SecurePanel 中的任何控件。

尝试将以下内容放在代码隐藏中引用它们的位置上方。

var datagridToPromptRetentionInvoiceDue = 
    (DataGrid)retentionInvoiceDue.FindControl("datagridToPromptRetentionInvoiceDue");

var panelToPromptRetentionInvoiceDue =
    (Panel)retentionInvoiceDue.FindControl("panelToPromptRetentionInvoiceDue");

【讨论】:

  • 谢谢...似乎找到了面板和数据网格,但现在它在 (DataGrid)retentionInvoiceDue.FindControl("datagridToPromptReten ......不存在于当前上下文
  • 那么您肯定会看到您的控件注册方式存在问题。不管mesh:SecurePanel 是...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-25
相关资源
最近更新 更多