winforms c#将System.Data.DataRowView转换为字符串

bxfogqkk  于 2023-01-17  发布在  C#
关注(0)|答案(5)|浏览(219)

我有一个组合框,它的数据源是一个datatable。我需要在组合框中的项目之间循环,但是我怎么做呢?我需要能够将类型为'System.Data.DataRowView'的每个对象转换为字符串。任何建议都非常感谢!@

xyhw6mcr

xyhw6mcr1#

根据您最近提出的问题,您似乎在尝试找出如何根据组合框中显示的文本查找或设置所选项。我不太清楚您是如何设置的,但请查看以下代码,看看是否有帮助:

private void button1_Click(object sender, EventArgs e)
{
    DataTable dt = new DataTable();
    dt.Columns.Add("ID", typeof(int));
    dt.Columns.Add("Name", typeof(string));

    dt.Rows.Add(1, "A");
    dt.Rows.Add(2, "B");
    dt.Rows.Add(3, "C");

    comboBox1.DataSource = dt;
    comboBox1.DisplayMember = "Name";
    comboBox1.ValueMember = "ID";

    // use SelectedValue to select the item with ID == 2
    comboBox1.SelectedValue = 2;

    // use FindStringExact() to find the index of text displayed in the item
    comboBox1.SelectedIndex = comboBox1.FindStringExact("C");
}

并使用上面设置的组合框,您可以获得显示成员的文本,如下所示:

private void button2_Click(object sender, EventArgs e)
{
    foreach (var item in comboBox1.Items)
        MessageBox.Show(((DataRowView)item)["Name"].ToString());
}
eyh26e7m

eyh26e7m2#

解决方法相同,希望有所帮助:将数据视图源转换回datatable,然后循环遍历它。

DataView dt = (DataView)comboBox1.DataSource;
        DataTable s = dt.Table;
        foreach(DataRow dr in s.Rows)

            MessageBox.Show(dr[0].ToString());
ybzsozfc

ybzsozfc3#

嗯......要循环遍历一个组合框,可以使用(稍微有点伪代码,请不要在没有处理代码的情况下使用c+p):

var newItems = new List<string>();
for(var i = 0; i < combobox1.Items.Count; i++)
{
   newItems.Add(combobox1.items[i].Text);
}

然后,要访问每个项目,请用途:

foreach(item in newItems)
{
var newVariable1 = item;
}

更多的信息和您目前的代码将很酷,我将能够帮助您更具体地与您的问题的方式。

kx5bkwkv

kx5bkwkv4#

解决方案:

DataTable DtShow=new DataTable();

for (int i = 0; i < DtShow.Rows.Count; i++)

 {

   Console.WriteLine(DtShow.Rows[i].Field<string>(0));

 }

**   Field<string>(0) Column number start from 0
axkjgtzd

axkjgtzd5#

希望这有一天能对某人有所帮助。我花了一段时间才想出一个从SQL Server填充CheckedBoxList的解决方案。

public partial class MemberSearch : Form
{
    List<string> DataList = new List<string>(1);

    public void GetTypesTable()
    {
        var CONEX = Properties.Settings.Default.Server_1_Conn;
        var sql = "SELECT Type_List FROM List_Member_Types;";
        DataTable dt = new DataTable();

        using (SqlConnection c = new SqlConnection(CONEX))
        using (SqlDataAdapter sda = new SqlDataAdapter(sql, c))
        
            sda.Fill(dt);
            DataView view = new DataView(dt);
            DataTable s = dt;

        foreach (DataRow ROW in s.Rows)

            DataList.Add(ROW[0].ToString());
            ckLstBox_MemTypes.DataSource = DataList;

    }

}

相关问题