Заполнение строки и ее отображение в gridview c # - PullRequest
0 голосов
/ 22 февраля 2019

У меня есть 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;
 }

Чтобы избежать всех человеческих ошибок,Я даже набрал вручную пользователя, которого я знаю, существует, и я протестировал хранимую процедуру, и она возвращает результаты с этим конкретным значением (список из них).

Спасибо, EB.

1 Ответ

0 голосов
/ 22 февраля 2019

Я думаю, что проблема заключается в этой строке: 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"]);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...