gpt4 book ai didi

c# - DataGridView 数据绑定(bind)

转载 作者:行者123 更新时间:2023-11-30 17:56:21 25 4
gpt4 key购买 nike

我举一个简单的例子来说明我想要的:

我定义了一个名为 Student 的类,它有两个属性:NameSubjects

public class Student()
{
public string Name;
public List<string> Subjects;
}

我创建了两个 Student 类的实例,例如:

List<string> jackSubjects = new List<string>();
jackSubjects.Add("Math");
jackSubjects.Add("Physics");
Student Jack = new Student("Jack", jackSubjects);
List<string> alanSubjects = new List<string>();
alanSubjects.Add("Accounting");
alanSubjects.Add("Science");
Student Alan = new Student("Alan", alanSubjects);

然后我创建一个列表 studentList:

List<Student> studentList = new List<Student>();
studentList.Add(Jack);
studentList.Add(Alan);

我的问题是,有什么方法可以将这个 studentListDataGridView 进行数据绑定(bind),如下所示:

dataGridView.DataSource = studentList;

第一列是学生姓名,第二列是组合框,显示学生的所有科目。

提前感谢您抽出时间。

最佳答案

像这样的东西会起作用:

  1. 将 RowDataBound 事件添加到您的网格并创建一个模板列来保存主题的下拉列表:

    <asp:GridView ID="dataGridView" runat="server" AutoGenerateColumns="false" OnRowDataBound="dataGridView_RowDataBound">
    <Columns>
    <asp:BoundField DataField="Name" />
    <asp:TemplateField>
    <ItemTemplate>
    <asp:DropDownList ID="subjects" runat="server" ></asp:DropDownList>
    </ItemTemplate>
    </asp:TemplateField>
    </Columns>

  2. 然后在后面的代码中处理 RowDataBound 事件:

    protected void dataGridView_RowDataBound(object sender, GridViewRowEventArgs e)
    {
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
    var ddl = (e.Row.FindControl("subjects") as DropDownList);
    ddl.DataSource = (e.Row.DataItem as Student).Subjects;
    ddl.DataBind();
    }
    }

呈现: enter image description here

顺便说一句,您的 Student 类应该如下所示:

public class Student
{
public string Name {get;set;}
public List<string> Subjects {get;set;}

public Student(string name, List<string> subjects)
{
Name = name;
Subjects = subjects;
}
}

关于c# - DataGridView 数据绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14266457/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com