我在解决这个问题时遇到了一些麻烦。
我有一个下拉列表(从连接名字和姓氏的数据源填充,值是“员工ID”,哦,它是一个sql server数据库)。
我还有一个表单视图,显示所有“员工”信息(相同的数据库,不同的sqldatasource。我想要做的是当用户从下拉列表中选择一个员工时,它会找到包含匹配员工的页面ID并显示该页面。
formview还需要保留分页,以允许用户在需要时选择下一个或上一个。 (如果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设置为true时有autopostback,它正在触发OnSelectedIndexChanged事件,我只是不确定下一步该做什么。 (更具体地说,我想我不知道如何在C#中找到匹配“员工ID”的页面。
非常感谢您的帮助!
答案 0 :(得分: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();
}