填充一个字符串并在 gridview c# 中显示它
Filling a string and showing it in a gridview c#
我有一个 gridview,我从 SQL 服务器收集资料。所有列都可以,除了显示所有可能选项的列。
存储过程工作得很好,它给出了一个名为 "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;
}
为了避免所有的人为错误,我什至手动输入了一个我知道存在的用户,我测试了存储过程,它 return 使用该特定值(它们的列表)的结果。
谢谢,
EB.
我认为问题出在这一行:result += dr.ToString() + "<br>";
。您没有访问行中的每一列(或任何列)。在行上调用 ToString()
只会 return 它的类型。
您可以使用 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"]);
我有一个 gridview,我从 SQL 服务器收集资料。所有列都可以,除了显示所有可能选项的列。
存储过程工作得很好,它给出了一个名为 "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;
}
为了避免所有的人为错误,我什至手动输入了一个我知道存在的用户,我测试了存储过程,它 return 使用该特定值(它们的列表)的结果。
谢谢, EB.
我认为问题出在这一行:result += dr.ToString() + "<br>";
。您没有访问行中的每一列(或任何列)。在行上调用 ToString()
只会 return 它的类型。
您可以使用 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"]);