formview控件onClick在面板内无法访问

时间:2014-07-15 15:07:41

标签: c# asp.net panel formview

** - 编辑 - 已解决 - ** 将onclick逻辑移动到表单数据绑定事件。


我在面板中有一个formview控件。 btn_addDropBoxReportDetail_Click事件使包含我的formview的面板可见。然后我在表单中找到我想要的控件,并动态默认某些控件的值。

现在我第一次点击btn_addDropBoxReportDetail_Click它有效。但是一旦我点击btn_addDropBoxReportDetailDone_Click来隐藏面板然后点击btn_addDropBoxReportDetail_Click它似乎没有等待面板变得可见。

编辑:我收到NullReferenceException未被用户代码处理。对象引用未设置为fvAddDropBoxReportDetail.FindControl上对象的实例

EDIT2:调试期间输入的值是 - 标签lblState =(标签)fv_DropboxReport.FindControl(" lblState"); == {文字=" WA"} ddlSourceStateAdd.SelectedIndex = ddlSourceStateAdd.Items.IndexOf(ddlSourceStateAdd.Items.FindByText(lblState.Text)); == {57} --- DEBUG模式显示第一次找到控件并且值正确传递。一切都很棒,直到我点击完成按钮,然后按下添加按钮。

一旦面板变得可见并显示表单,它应该在表单中找到控件并默认使用此行代码从lblState.Text获取的选定值 ddlSourceStateAdd.SelectedIndex = ddlSourceStateAdd.Items.IndexOf(ddlSourceStateAdd.Items.FindByText(lblState.Text));

表单在什么时候可见,以便找到控件?还是有不同的问题?我想了解在解决问题的过程中遇到的问题。

<asp:Panel ID="pnlDropBoxDetailReportForm" runat="server" Visible="false">
                            <asp:FormView ID="fvAddDropBoxReportDetail" runat="server" SkinID="annualReportFormview"
                                HeaderText="Selected Drop Box Report Detail" DataKeyNames="DropBoxReportDetailId" DefaultMode="Insert"
                                DataSourceID="odsDropBoxReportDetail" OnDataBound="fvAddDropBoxReportDetail_DataBound"
                                OnItemCommand="fvAddDropBoxReportDetail_ItemCommand" OnItemInserted="fvAddDropBoxReportDetail_ItemInserted"
                                OnItemUpdated="fvAddDropBoxReportDetail_ItemUpdated" OnItemDeleted="fvAddDropBoxReportDetail_ItemDeleted">
                               <InsertItemTemplate>
                                   County<br />
                                                <asp:DropDownList ID="ddlSourceCountyAdd" runat="server" DataSourceID="odsCounty"
                                                    DataTextField="CountyName" DataValueField="CountyId">
                                                </asp:DropDownList>
                                            <br />State<br />
                                                <asp:DropDownList ID="ddlSourceStateAdd" runat="server" DataSourceID="odsState"
                                                    DataTextField="StateCode" DataValueField="StateCode" SelectedValue='<%# Bind("StateCode") %>'>
                                                </asp:DropDownList>
                                </InsertTemplate>
                          </FormView>
     </Panel>

代码背后

protected void btn_addDropBoxReportDetail_Click(object sender, EventArgs e)
    {
        fvAddDropBoxReportDetail.ChangeMode(FormViewMode.Insert);
        pnlDropBoxDetailReportForm.Visible = true;
        btn_addDropBoxDetailReport.Visible = false;
        btn_addDropBoxDetailReportDone.Visible = true;
        ValidationSummaryDropBoxReportDetail.ValidationGroup = "DropBoxReportDetail";
        gvDropBoxReportDetail.Columns[0].Visible = false;

        if (pnlDropBoxDetailReportForm.Visible == true && fvAddDropBoxReportDetail.CurrentMode != FormViewMode.ReadOnly)
        {
            DropDownList ddlSourceCountyAdd = (DropDownList)fvAddDropBoxReportDetail.FindControl("ddlSourceCountyAdd");
            DropDownList ddlSourceStateAdd = (DropDownList)fvAddDropBoxReportDetail.FindControl("ddlSourceStateAdd");

            Label lblState = (Label)fv_DropboxReport.FindControl("lblState");
            ddlSourceStateAdd.SelectedIndex = ddlSourceStateAdd.Items.IndexOf(ddlSourceStateAdd.Items.FindByText(lblState.Text));

            Label lblCounty = (Label)fv_DropboxReport.FindControl("lblCounty");
            ddlSourceCountyAdd.SelectedIndex = ddlSourceCountyAdd.Items.IndexOf(ddlSourceCountyAdd.Items.FindByText(lblCounty.Text));
        }

    }
    protected void btn_addDropBoxReportDetailDone_Click(object sender, EventArgs e)
    {
        fvAddDropBoxReportDetail.ChangeMode(FormViewMode.ReadOnly);
        pnlDropBoxDetailReportForm.Visible = false;
        btn_addDropBoxDetailReport.Visible = true;
        btn_addDropBoxDetailReportDone.Visible = false;
        gvDropBoxReportDetail.Columns[0].Visible = true;

    }

0 个答案:

没有答案