我有一个GridView与以下领域动态GridView的下拉列表
讲座ID,讲师名,主题和GridView控件中包含的链接按钮可插入,编辑和DELETE.what我 需要的是,当我点击,编辑科目列应该包含DROPDOWN列表以选择主题。 如果GridView行不处于编辑模式或INSERT模式DROPDOWN不应显示,并只显示讲师讲授的主题。
我有一个GridView与以下领域动态GridView的下拉列表
讲座ID,讲师名,主题和GridView控件中包含的链接按钮可插入,编辑和DELETE.what我 需要的是,当我点击,编辑科目列应该包含DROPDOWN列表以选择主题。 如果GridView行不处于编辑模式或INSERT模式DROPDOWN不应显示,并只显示讲师讲授的主题。
这可以通过主题列一个TemplateField来完成,如下图所示:
<asp:TemplateField Header="Subject">
<EditItemTemplate>
<asp:DropDownList ID="subjectDDl" runat="server"></asp:DropDownList>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="subjectLabel" runat="server"></asp:Label>
</ItemTemplate>
</asp:TemplateField>
您可能已经加入ButtonField字段列调用编辑,插入和删除功能。
做这种数据绑定的诀窍是使用两个数据源,一个包含讲座ID,讲师姓名和主题ID,另一个包含主题列表。你可以与任何DataSource控件的做到这一点 - 这是一个使用的SqlDataSource演示:
<!-- First data source is the main data source for the gridview -->
<asp:SqlDataSource runat="server" id="LectureDataSource"
SelectCommand="SELECT l.LectureId, l.Lecturer, l.SubjectId, s.Subject FROM Lecture l INNER JOIN Subject s ON l.SubjectId = s.SubjectID"
UpdateCommand="UPDATE Lecture SET Lecturer = @Lecturer, SubjectId = @SubjectId"
DeleteCommand="DELETE FROM Lecture WHERE LectureId = @LectureId" InsertCommand="INSERT INTO Lecture (Lecturer, SubjectId) VALUES (@Lecturer, @SubjectID)"
>
<DeleteParameters>
<asp:ControlParameter ControlID="LectureGridView" Name="LectureId"
PropertyName="SelectedValue" />
</DeleteParameters>
<UpdateParameters>
<asp:Parameter Name="Lecturer" />
<asp:Parameter Name="SubjectId" />
</UpdateParameters>
</asp:SqlDataSource>
<!-- Second data source is the data source for the Subject dropdownlist -->
<asp:SqlDataSource runat="server" ID="SubjectDataSource"
SelectCommand="SELECT SubjectId, Subject FROM Subject ORDER BY SubjectId" />
<asp:GridView runat="server" AutoGenerateColumns="False" DataSourceID="LectureDataSource"
ID="LectureGridView" DataKeyNames="LectureId" >
<!-- Setting the DataKeyNames property allows us to delete by using the SelectedValue -->
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:LinkButton Text="Edit" runat="server" CommandName="Edit" />
<asp:LinkButton Text="Delete" runat="server" CommandName="Delete" />
</ItemTemplate>
<EditItemTemplate>
<asp:LinkButton Text="Update" runat="server" CommandName="Update" />
<asp:LinkButton Text="Cancel" runat="server" CommandName="Cancel" />
</EditItemTemplate>
<ItemStyle HorizontalAlign="Center" />
</asp:TemplateField>
<asp:BoundField DataField="LectureId" HeaderText="Lecture Id" ReadOnly="true" />
<asp:TemplateField HeaderText="Lecturer">
<ItemTemplate>
<asp:Label Text='<%# Bind("Lecturer") %>' runat="server" ID="LecturerLabel" />
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox ID="LecturerEditTextBox" runat="server" Text='<%# Bind("Lecturer") %>'></asp:TextBox>
</EditItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
<ItemTemplate>
<!-- The label is bound to the subject text field from the LectureDataSource -->
<asp:Label ID="SubjectLabel" runat="server" Text='<%# Bind("Subject") %>' />
</ItemTemplate>
<EditItemTemplate>
<!-- In Edit mode the dropdownlist is bound to the SubjectDataSource, but we also set the text value from the LectureDataSource -->
<asp:DropDownList ID="SubjectEditDropDownList" runat="server" DataSourceID="SubjectDataSource"
DataTextField="Subject" DataValueField="SubjectId" Text='<%# Bind("SubjectId") %>'>
</asp:DropDownList>
</EditItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
你能告诉我们你有什么迄今的代码和标记?很难回答一个没有明确目标的问题。 – jwiscarson 2011-02-01 15:39:04