2014-08-27 69 views
0

我有幾種形式,每種都有自己的DDL,我在頁面中使用它們。我有他們不同的形式,因爲我需要每個DDL不同的數據源。當我按提交按鈕時,它給我一個錯誤,它無法找到控件「ddlCategory」。我認爲這是因爲它的形式不同。下面是標記:從同一頁面內的另一個formview訪問控件

<asp:FormView ID="FormView1" runat="server" DataKeyNames="ID" 
    DataSourceID="AccessDataSource1" DefaultMode="Insert" > 
    <InsertItemTemplate>  
     Select a Category:<br /> 
     <asp:DropDownList ID="ddlCategory" runat="server" AutoPostBack="True" 
      DataSourceID="AccessDataSource1" DataTextField="ORG_NAME" 
      DataValueField="ID"> 
     </asp:DropDownList> 
    </InsertItemTemplate> 
</asp:FormView> 
<asp:AccessDataSource ID="AccessDataSource1" runat="server" 
    DataFile="~/App_Data/webvideos.mdb" 
    SelectCommand="SELECT * FROM [ORGANIZATIONS]"/> 
<br /> 
<asp:FormView ID="FormView2" runat="server" DataKeyNames="ID" 
    DataSourceID="AccessDataSource2" DefaultMode="Insert" > 
    <InsertItemTemplate> 
     Select an Organization:<br /> 
     <asp:DropDownList ID="ddlOrg" runat="server" 
      DataSourceID="AccessDataSource2" DataTextField="SectionName" 
      DataValueField="ID"> 
     </asp:DropDownList> 
    </InsertItemTemplate> 
</asp:FormView>  
<asp:AccessDataSource ID="AccessDataSource2" runat="server" 
    DataFile="~/App_Data/webvideos.mdb" 
    SelectCommand="SELECT ID,SectionName FROM ORG_SECTIONS WHERE [email protected] "> 
    <SelectParameters> 
     <asp:ControlParameter ControlID="ddlCategory" 
      PropertyName="SelectedValue" 
      Name="ID" Type="String" 
      DefaultValue="" /> 
    </SelectParameters> 
</asp:AccessDataSource> 
<br /> 
<asp:FormView ID="FormView3" runat="server" DataKeyNames="ID" 
    DataSourceID="AccessDataSource3" DefaultMode="Insert" > 
    <InsertItemTemplate> 
     Select an Attorney:<br /> 
     <asp:DropDownList ID="ddlAtty" runat="server" 
      DataSourceID="AccessDataSource3" DataTextField="Expr1" DataValueField="ATTY_ID"> 
     </asp:DropDownList> 
    </InsertItemTemplate> 
</asp:FormView> 
<asp:AccessDataSource ID="AccessDataSource3" runat="server" 
    DataFile="~/App_Data/webvideos.mdb" 
    SelectCommand="SELECT ATTY_ID, NAME & ' ' & INITIAL & ' ' & LASTNAME AS Expr1 FROM ATTORNEYS ORDER BY NAME & INITIAL & ' ' & LASTNAME"> 
</asp:AccessDataSource> 

此外,如果有一種方法做一個FormView控件裏面,我想知道這一點。

+0

您能否將您的代碼放在後面,特別是提供錯誤的行?當你說「不同的形式」,你的意思是不同的FormView或實際上是不同的形式? – 2014-08-28 03:51:27

回答

0

就是這麼做的:

<asp:AccessDataSource ID="AccessDataSource1" runat="server" 
    DataFile="~/App_Data/webvideos.mdb" 
    SelectCommand="SELECT * FROM [ORGANIZATIONS]"/> 

<asp:AccessDataSource ID="AccessDataSource3" runat="server" 
    DataFile="~/App_Data/webvideos.mdb" 
    SelectCommand="SELECT ATTY_ID, NAME & ' ' & INITIAL & ' ' & LASTNAME AS Expr1 FROM ATTORNEYS ORDER BY NAME & INITIAL & ' ' & LASTNAME"> 
</asp:AccessDataSource> 
<br /> 
<asp:FormView ID="FormView1" runat="server" DataKeyNames="ID" 
    DataSourceID="AccessDataSource1" DefaultMode="Insert" > 
    <InsertItemTemplate>  
     Select a Category:<br /> 
     <asp:DropDownList ID="ddlCategory" runat="server" AutoPostBack="True" 
      DataSourceID="AccessDataSource1" DataTextField="ORG_NAME" 
      DataValueField="ID"> 
     </asp:DropDownList> 
    <br /> 
    <asp:AccessDataSource ID="AccessDataSource2" runat="server" 
     DataFile="~/App_Data/webvideos.mdb" 
     SelectCommand="SELECT ID,SectionName FROM ORG_SECTIONS WHERE [email protected] "> 
     <SelectParameters> 
      <asp:ControlParameter ControlID="ddlCategory" 
       PropertyName="SelectedValue" 
       Name="ID" Type="String" 
       DefaultValue="" /> 
     </SelectParameters> 
    </asp:AccessDataSource> 
     Select an Organization:<br /> 
     <asp:DropDownList ID="ddlOrg" runat="server" 
      DataSourceID="AccessDataSource2" DataTextField="SectionName" 
      DataValueField="ID"> 
     </asp:DropDownList> 
<br /> 
     Select an Attorney:<br /> 
     <asp:DropDownList ID="ddlAtty" runat="server" 
      DataSourceID="AccessDataSource3" DataTextField="Expr1" DataValueField="ATTY_ID"> 
     </asp:DropDownList> 
    </InsertItemTemplate> 
</asp:FormView> 
<br /> 
<asp:Button ID="Button1" runat="server" Text="Submit" OnClick="AddRec" /> 

而後面的代碼:

protected void AddRec(object sender, EventArgs e) 
{ 
    DropDownList ddlCategory = (DropDownList)FormView1.FindControl("ddlCategory"); 
    DropDownList ddlOrg = (DropDownList)FormView1.FindControl("ddlOrg"); 
    DropDownList ddlAtty = (DropDownList)FormView1.FindControl("ddlAtty"); 

    string constr = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\webvideos.mdb;"; 
    string cmdstr = "INSERT INTO [Org_Sec_Atty] ([OrgID], [SecID], [Atty_ID]) VALUES (?, ?, ?)"; 


    OleDbConnection con = new OleDbConnection(constr); 
    OleDbCommand com = new OleDbCommand(cmdstr, con); 

    con.Open(); 
    com.Parameters.AddWithValue("@OrgID", ddlCategory.SelectedValue); 
    com.Parameters.AddWithValue("@SecID", ddlOrg.SelectedValue); 
    com.Parameters.AddWithValue("@AttyID", ddlAtty.SelectedValue); 
    com.ExecuteNonQuery(); 
    con.Close(); 
    Response.Redirect("ManageProfAffs.aspx"); 
} 

而完成的。

相關問題