2011-10-13 63 views
1

我在找出這個問題時遇到了一些麻煩。如何使用下拉列表來更新formview顯示

我有一個下拉列表(從連接名字和姓氏的數據源填充,值是「員工ID」,哦,它是一個SQL Server數據庫)。

我也有一個formview,顯示所有的「員工」信息(同一個數據庫,不同的sqldatasource。我試圖做的是當用戶從下拉列表中選擇一個員工,它發現與匹配的頁面僱員ID並顯示該頁面

formview還需要保持分頁,以允許用戶選擇next或previous(如果需要的話,它也會很好,如果ddl會在下一個和上一個顯示時更新以顯示目前看員工)。

目前,我有FormView控件內部的DDL,具有

SelectedValue='<%# Eval("Employee_ID") %> (which I'm hoping will take care of the ddl showing part, haven't tested that bit as I just woke up,heh). 

我把ddl中的autopostback設置爲true,並且它觸發OnSelectedIndexChanged事件,我只是不知道下一步該怎麼做。 (更確切地說,我想我不知道如何在C#中找到匹配的「員工ID」的頁面。

感謝任何幫助!

+0

我剛剛結束了欺騙,並使用選定的索引設置FormView控件的的PageIndex>> –

回答

2

我覺得這是很大的例子,如何綁定並使用下拉菜單中選擇項....更新表單視圖

<asp: ObjectDataSource ID="ObjectDataSource1" runat="server" DeleteMethod="Delete" 
     InsertMethod="Insert" OldValuesParameterFormatString="original_{0}" SelectMethod="GetData" 
     TypeName="DataSet1TableAdapters.teachersTableAdapter" UpdateMethod="Update"> 
    <DeleteParameters> 
     <asp: Parameter Name="Original_PKID" Type="Int32" /> 
    </DeleteParameters> 
    <UpdateParameters> 
     <asp: Parameter Name="name" Type="String" /> 
     <asp: Parameter Name="lastname" Type="String" /> 
     <asp: Parameter Name="department" Type="Int32" /> 
     <asp: Parameter Name="PKID" Type="Int32" /> 
    </UpdateParameters> 
    <InsertParameters> 
     <asp: Parameter Name="name" Type="String" /> 
     <asp: Parameter Name="lastname" Type="String" /> 
     <asp: Parameter Name="department" Type="Int32" /> 
    </InsertParameters> 
    </asp: ObjectDataSource> 
    <br /> 

    <asp: ObjectDataSource ID="ObjectDataSource2" runat="server" DeleteMethod="Delete" 
    InsertMethod="Insert" OldValuesParameterFormatString="original_{0}" SelectMethod="GetData" 
    TypeName="DataSet1TableAdapters.departmentsTableAdapter" UpdateMethod="Update"> 
    <DeleteParameters> 
     <asp: Parameter Name="Original_PKID" Type="Int32" /> 
    </DeleteParameters> 
    <UpdateParameters> 
     <asp: Parameter Name="departmentName" Type="String" /> 
     <asp: Parameter Name="PKID" Type="Int32" /> 
    </UpdateParameters> 
     <InsertParameters> 
     <asp: Parameter Name="departmentName" Type="String" /> 
     </InsertParameters> 
     </asp:ObjectDataSource></div><br /> 

     <asp: FormView ID="FormView1" runat="server" AllowPaging="True" DataKeyNames="PKID" 
     DataSourceID="ObjectDataSource1" OnDataBound="FormView1_DataBound"> 
    <EditItemTemplate> 
     PKID: 
     <asp: Label ID="PKIDLabel1" runat="server" Text='<%# Eval("PKID") %>'></asp:Label><br /> 
     name: 
     <asp: TextBox ID="nameTextBox" runat="server" Text='<%# Bind("name") %>'> 
      </asp: TextBox><br /> 
     lastname: 
     <asp: TextBox ID="lastnameTextBox" runat="server" Text='<%# Bind("lastname") %>'> 
    </asp: TextBox><br /> 
     department: 
     <asp: TextBox ID="departmentTextBox" runat="server" Text='<%# Bind("department") %>'> 
     </asp:TextBox><br /> 
     <asp:LinkButton ID="UpdateButton" runat="server" CausesValidation="True" CommandName="Update" 
      Text="Update"> 
     </asp: LinkButton> 
     <asp: LinkButton ID="UpdateCancelButton" runat="server" CausesValidation="False"    CommandName="Cancel" 
    Text="Cancel"> 
     </asp: LinkButton> 
    </EditItemTemplate> 
    <InsertItemTemplate> 
    name: 
    <asp: TextBox ID="nameTextBox" runat="server" Text='<%# Bind("name") %>'> 
    </asp: TextBox><br /> 
    lastname: 
    <asp: TextBox ID="lastnameTextBox" runat="server" Text='<%# Bind("lastname") %>'> 
    </asp: TextBox><br /> 
    department: 
    <asp: TextBox ID="departmentTextBox" runat="server" Text='<%# Bind("department") %>'> 
    </asp: TextBox><br /> 
    <asp: LinkButton ID="InsertButton" runat="server" CausesValidation="True" CommandName="Insert" 
    Text="Insert"> 
    </asp: LinkButton> 
    <asp: LinkButton ID="InsertCancelButton" runat="server" CausesValidation="False" CommandName="Cancel" 
    Text="Cancel"> 
    </asp: LinkButton> 
    </InsertItemTemplate> 
    <ItemTemplate> 
    PKID: 
    <asp: Label ID="PKIDLabel" runat="server" Text='<%# Eval("PKID") %>'></asp:Label><br /> 
    name: 
    <asp: Label ID="nameLabel" runat="server" Text='<%# Bind("name") %>'></asp: Label><br /> 
    lastname: 
    <asp: Label ID="lastnameLabel" runat="server" Text='<%# Bind("lastname") %>'></asp: Label><br /> 
    department: 
    <asp: DropDownList ID="DropDownList1" runat="server" DataSourceID="ObjectDataSource2" 
    DataTextField="departmentName" DataValueField="PKID"> 
    </asp: DropDownList><br /> 
    <asp: LinkButton ID="EditButton" runat="server" CausesValidation="False" CommandName="Edit" 
    Text="Edit"></asp: LinkButton> 
    <asp: LinkButton ID="DeleteButton" runat="server" CausesValidation="False" CommandName="Delete" 
    Text="Delete"></asp: LinkButton> 
    <asp: LinkButton ID="NewButton" runat="server" CausesValidation="False" CommandName="New" 
    Text="New"></asp: LinkButton> 
    </ItemTemplate> 
    </asp: FormView> 

In the code behind i used itemdatabound event of the formview so that i set the <strong class="highlight">selected</strong> value for the dropdownlist as follows : 



protected void FormView1_DataBound(object sender, EventArgs e) 
{ 
     DataRowView drv = (DataRowView)FormView1.DataItem; 
     ((DropDownList)FormView1.FindControl("DropDownList1")).SelectedValue = drv["department"].ToString(); 
} 
protected void FormView1_DataBound(object sender, EventArgs e) 
{ 
     DataRowView drv = (DataRowView)FormView1.DataItem; 
     ((DropDownList)FormView1.FindControl("DropDownList1")).SelectedValue = drv["department"].ToString(); 
} 
+0

嗯,這顯示了右邊的DDL項目,但我仍然無能爲力,當涉及到如何讓表單顯示員工,用戶從ddl中選擇。 非常感謝儘管如此,問題已經解決了一半。 –