填充字符串并将其显示在gridview C#中

时间:2019-02-22 18:54:24

标签: c# gridview

我有一个gridview,可在其中从SQL Server收集资料。除显示所有可能选项的那一列外,所有列均正常。

存储过程可以正常工作,它给出了一个名为“ tipoId”的列,其中包含所需值的数组,因此在那里没有问题。

现在,对于显示部分。除了这一列之外,所有列都可以正常工作。

<asp:TemplateField HeaderText="Options" SortExpression="">
     <HeaderStyle HorizontalAlign="Left" />
     <ItemStyle HorizontalAlign="Left" />
     <ItemTemplate><%# GetOpciones(Eval("Username").ToString())% </ItemTemplate>
</asp:TemplateField>

这是我填写该特定部分的字符串的部分。

public string GetOpciones(string username)
{
      ASF.Raffle.BO.Staff usr = new ASF.Raffle.BO.Staff();
      ASF.Raffle.Entity.Staff u = usr.GetByUsername(username);
      string salida = usr.getAllOptions("bravoje");
      return usr.getAllOptions(u.Username);
}

public string getAllOptions(string usr)
{
    string result="";
    //SQL Command para llamar el stored procedure
    SqlCommand comando = new SqlCommand("dbo.[Equipos_GetOptionsByUserName]", base.Db);
    //parametros del store procedure
    SqlParameter spSearch = new SqlParameter("@usr", System.Data.SqlDbType.VarChar, 50);
    spSearch.Value = usr;
    comando.Parameters.Add(spSearch);
    //Ejecuta consulta
    DataTable dtItem = base.Execute(comando);
    //Transforma el Datatable en una lista de proyectos.
    foreach (DataRow dr in dtItem.Rows)
        result += dr.ToString() + "<br>";
     return result;
 }

为避免所有人为错误,我什至手动键入了一个我认识的用户,并测试了存储过程,它确实返回具有该特定值(它们的列表)的结果。

谢谢, EB。

1 个答案:

答案 0 :(得分:0)

我认为问题出在以下这一行:result += dr.ToString() + "<br>";。您没有访问该行(或任何列)中的每一列。在行上调用ToString()只会返回其类型。

您可以使用dr[0], dr[1], ...按索引访问每一列。例如:

foreach (DataRow dr in dtItem.Rows)
   result += $"{dr[0]} <br>";

或按列名dr["tipold"], dr["col2"], ...。示例:

foreach (DataRow dr in dtItem.Rows)
    result += string.Format("{0}<br>", dr["tipold"]);