【问题标题】:Looping datatable for assigning values to a string用于将值分配给字符串的循环数据表
【发布时间】:2016-08-31 05:14:34
【问题描述】:

我有一个gridview,其中有多个columnsrows

调试时会生成datatable,如下所示

它的查询是

DataTable dttable2 = new DataTable();
    dttable2 = CF.ExecuteDT("select cr.Mkey, cr.Rating1,cr.Rating2,cr.Rating3,cr.Rating4 from p_emp_Company_Rating cr  "+
                            "join p_emp_Exit_Interview ei on ei.Mkey=cr.Mkey where ei.mkey='" + HidMKey.Value + "'");

我想尽可能多地循环它包含的行。

我尝试了下面的代码,但它只运行一次就出来了。

string strgrid1 = string.Empty;

    if (dttable2.Rows.Count > 0)
    { 
        /** Job security **/
        if (dttable2.Rows[0]["Rating1"].ToString() == "Y")
        {
            strgrid1 = "Poor";
        }
        if (dttable2.Rows[0]["Rating2"].ToString() == "Y")
        {
            strgrid1 = "Satisfactory";
        }
        if (dttable2.Rows[0]["Rating3"].ToString() == "Y")
        {
            strgrid1 = "Good";
        }
        if (dttable2.Rows[0]["Rating4"].ToString() == "Y")
        {
            strgrid1 = "Excellent";
        }
    }

下面是gridview的截图

如何循环?

【问题讨论】:

    标签: c# asp.net gridview datatable


    【解决方案1】:

    尝试使用foreach 循环而不是if 语句。

    string strgrid1 = string.Empty;
    
    foreach (DataRow row in dttable2.Rows)
    { 
        /** Job security **/
        if (row["Rating1"].ToString() == "Y")
        {
            strgrid1 = "Poor";
        }
        if (row["Rating2"].ToString() == "Y")
        {
            strgrid1 = "Satisfactory";
        }
        if (row["Rating3"].ToString() == "Y")
        {
            strgrid1 = "Good";
        }
        if (row["Rating4"].ToString() == "Y")
        {
            strgrid1 = "Excellent";
        }
    }
    

    【讨论】:

    • row 得到错误cannot apply indexing with to an expression of type object
    • 对不起。我忘记了在使用 DataTables 时必须明确声明该行为DataRow。试试看。
    【解决方案2】:

    你也可以试试 For Loop 来达到想要的效果。

    string strgrid1 = string.Empty;
    
    if (dttable2.Rows.Count > 0)
    { 
        /** Job security **/
        for(int i = 0; i < dttable2.Rows.Count - 1; i++)
        {
           if (dttable2.Rows[i]["Rating1"].ToString() == "Y")
           {
            strgrid1 = "Poor";
           }
           if (dttable2.Rows[i]["Rating2"].ToString() == "Y")
           {
            strgrid1 = "Satisfactory";
           }
           if (dttable2.Rows[i]["Rating3"].ToString() == "Y")
           {
            strgrid1 = "Good";
           }
           if (dttable2.Rows[i]["Rating4"].ToString() == "Y")
           {
            strgrid1 = "Excellent";
           }
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-08
      • 2021-09-03
      • 1970-01-01
      相关资源
      最近更新 更多