【问题标题】:Cannot access control inside DetailsView Edit template无法在 DetailsView 编辑模板中访问控制
【发布时间】:2016-04-05 10:49:07
【问题描述】:

大家好,提前感谢,

好吧,我的 .aspx 文件中有一个 DetailsView,我无法访问 DetailsView 的编辑模板中放置的 CheckBoxList 控件。我已经阅读了很多关于此的主题,但仍然找不到解决方案。这是代码...

 <asp:DetailsView ID="MyDetailsView" runat="server" Height="50px" Width="125px" AutoGenerateRows="False" DataSourceID="DataMyDetailsView">
    ...
    ...
    <asp:TemplateField HeaderText="DATA" SortExpression="DATA">
        <EditItemTemplate>
            <div style="width:400px; height:300px; overflow-y:auto">
                <asp:CheckBoxList ID="DataCL" runat="server" DataSourceID="DataEDIT" DataTextField="DATA" DataValueField="ID_DATA">
                </asp:CheckBoxList>
            </div>

然后,在我的 .cs 文件中,我有这段代码...

protected void Page_Load(object sender, EventArgs e)
{

    if (!IsPostBack)
    {
        // Do something
    }
    else
    {
        CheckItems();
    }
 }

...
...

public void CheckItems()
{
    CheckBoxList DataCL = (CheckBoxList)MyDetailsView.FindControl("DataCL");

    using (conexion)
    {
        conexion.Open();
        cmd.Connection = conexion;

        DataSet ds = new DataSet();
        string cmdstr = "SELECT * FROM DATA";
        SqlDataAdapter adp = new SqlDataAdapter(cmdstr, conexion);
        adp.Fill(ds);
        DataCL.DataSource = ds;
        DataCL.DataTextField = "DATA";
        DataCL.DataValueField = "ID_DATA";
        DataCL.DataBind();

问题是当执行到达调用控件的第一行时(DataCL.DataSource = ds;),会抛出“NullPointerExeception”,但是我可以轻松访问 ItemTemplate 中的控件。

请,有人可以帮助我吗?再次感谢!

【问题讨论】:

    标签: c# asp.net detailsview


    【解决方案1】:

    你不能这样做,因为这个控件是在数据绑定之后动态创建的。而是将您的网格附加到 DataBound (MSDN) 事件并在那里绑定复选框列表

    protected void MyDetailsView_DataBound(object sender, EventArgs e)
    {
        if (MyDetailsView.CurrentMode == DetailsViewMode.Edit)
        {
            CheckBoxList DataCL = (CheckBoxList)MyDetailsView.FindControl("DataCL");
    
            using (conexion)
            {
                // your data bound code goes here
            }
        }
    }
    

    【讨论】:

    • 好的,gzaxx,成功了!非常感谢,这个问题让我发疯了!
    猜你喜欢
    • 1970-01-01
    • 2016-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-18
    • 1970-01-01
    相关资源
    最近更新 更多