是否可以使用c#函数填充Gridview
表?对于Gridview
,我通常会在检索数据后看到DataSource
和SqlDataSource
以及查询。
我已经拥有List
个对象,每个对象都有应该填充表格的字段。每个对象有9个字符串字段,每个字段应绑定到一列。列表中的每个对象实际上代表表中的一行。 c#文件中的代码会是这样的吗?
for (int i = 0; i < credentials.Count; i++)
{
for (int j = 0; j < 10; j++)
{
row1["ID"] = credentials[i].Id.ToString();
row1["Windows ID"] = credentials[i].WindowsId;
row1["First Name"] = credentials[i].FirstName.ToString();
row1["Last Name"] = credentials[i].LastName.ToString();
...
dt.Rows.Add(row1);
}
}
gridRoles.DataSource = dt;
gridRoles.DataBind();
答案 0 :(得分:0)
如果您已经有一个对象列表,您可以将其设置为GridView的数据源,无需转换或创建新的数据表。
gridRoles.DataSource = credentials;
答案 1 :(得分:0)
编辑:其他人一直在说你的数据应该是gridview上的一个来源。我相信这会有效并且更快。我的解决方案可以用迭代创建新数据(比如说你希望ID匹配gridview上的点。)然而,为列表项创建一个新模型并为了创建一些getter可能很方便。模块化OOP。
在这种情况下,我会为您的gridview项创建一个新模型(在这种情况下看起来像用户)。所以我在UWP中做了类似的事情,结果看起来像这样:
ButtonRow = new List<ButtonModel>();
int daysOnButtonRow = 365;
TimeSpan additionalDay = new System.TimeSpan(1);
for (int i = 0; i < daysOnButtonRow; i++)
{
ButtonRow.Add(new ButtonModel(DaysFromToday(i), DaysFromToday(i + 1)));
}
然后ButtonModel类包含特定于每个按钮的参数和getters,以获取我想在该按钮上显示的相关信息。
public class ButtonModel
{
public DateTime StartDate { get; set; }
public DateTime EndDate { get; set; }
public ButtonModel(DateTime _startDate, DateTime _endDate)
{
StartDate = _startDate;
EndDate = _endDate;
}
public string StartDateTruncatedName
{
get { return StartDate.ToString("dddd").Substring(0, 3).ToUpper(); }
}
public string StartDateDayNum
{
get { return StartDate.Day.ToString(); }
}
public string StartDateMonth
{
get { return StartDate.ToString("MMMM").ToUpper(); }
}
}
这可以更清洁,更模块化。列表视图上的示例,但它应该与gridview类似。由于您已经在使用填充列表,我建议您使用&#39; for-in&#39;循环以及迭代而不是标准&#39; for&#39;环。这样就可以在每次向列表中添加项目时将其添加到gridview中。
希望这有帮助! :)
答案 2 :(得分:0)
是的,你正在做什么看起来应该有用,虽然我不确定你使用j
是什么,因为它没有在上面的代码中使用。我以编程方式在过去填充DataGridView
的方式是创建DataTable
对象:
DataTable dt = new DataTable();
定义其列:
dt.Columns.Add(columnName);`
创建DataRow
s:
DataRow row = dt.NewRow();
//fill row
row[columnName or index] = value; //repeat for needed values, could use a for loop and go through indexes
将DataRow
添加到DataTable
:
dt.Rows.Add(row);
dt.Rows.InsertAt(row, index); //if you want a specific position
最后,将DataGridView
的{{1}}设置为DataSource
,就像你一样:
DataTable
注意:如果您没有dgv.DataSource = dt;
的定义与DataGridView
相同的列,那么事情将无法正常工作。
答案 3 :(得分:0)
为什么你不能使用ObjectDataSource?在ObjectDatasource的属性中指定类和方法,您就完成了所有设置。将ObjectDatasource绑定到网格视图。
答案 4 :(得分:0)
SqlCommand cmd = new SqlCommand();
SqlConnection con = new SqlConnection();
try
{
using (SqlConnection con = new SqlConnection("Data Source = [SERVERNAME]; Initial Catalog = CustomerOrders; Integrated Security = true"))
{
String name = dropDownList.SelectedItem.Text;
SqlDataAdapter cmd = new SqlDataAdapter("SELECT * FROM Customer INNER JOIN Orders ON Customer.CustomerID = Orders.ReferenceID WHERE Name = '" + name + "'", con);
con.Open();
DataTable dtbl = new DataTable();
cmd.Fill(dtbl);
gvPhoneBook.DataSource = dtbl;
gvPhoneBook.DataBind();
}
}
catch (Exception Ex)
{
Console.WriteLine(Ex.Message);
}