2016-09-21 6 views
1

У меня есть gridview, который получает данные из базы данных.
Вот код .NET. Там много столбцов, и вот шаблон: выбор - это тот, о котором я говорю.Gridview должен показывать текст вместо значения из базы данных

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" AllowPaging="True" CellPadding="4" DataKeyNames="EmpID" ForeColor="#333333" GridLines="None" style="margin-right: 81px" Width="1174px" > 
     <AlternatingRowStyle BackColor="White" ForeColor="#284775" /> 
     <Columns> 
<asp:TemplateField HeaderText="Choice" SortExpression="Choice"> 
     <EditItemTemplate> 
        <asp:DropDownList ID="DropDownChoice" Text='<%# Bind("Choice") %>' runat="server" Width="60px"> 
          <asp:ListItem Text="No" Value="0"></asp:ListItem> 
          <asp:ListItem Text="Yes" Value="1"></asp:ListItem> 
        </asp:DropDownList> 
     </EditItemTemplate> 
     <ItemTemplate> 
        <asp:Label ID="lblChoice" runat="server" Text='<%# Bind("Choice") %>'></asp:Label> 
     </ItemTemplate> 
</asp:TemplateField> 

Здесь, на EditItemTemplate, пользователь может редактировать указанные данные в базе данных. Где я могу использовать выпадающий список и показать текст как нет или да, но это значение, которое будет сохранено в базе данных по-прежнему 0 и 1.

<EditItemTemplate> 
     <asp:DropDownList ID="DropDownChoice" Text='<%# Bind("Choice") %>' runat="server" Width="60px"> 
         <asp:ListItem Text="No" Value="0"></asp:ListItem> 
         <asp:ListItem Text="Yes" Value="1"></asp:ListItem> 
     </asp:DropDownList> 
</EditItemTemplate> 

У меня возникли проблемы показывать текст Нет и Да на Gridview, как только он запустится. Как вы можете видеть здесь код ItemTemplate:

<ItemTemplate> 
     <asp:Label ID="lblChoice" runat="server" Text='<%# Bind("Choice") %>'></asp:Label> 
</ItemTemplate> 

Please suggest a way/method to show No/Yes on the ItemTemplate/Gridview section once executed. Thanks (let me know if you might need the C# code to bind data on the gridview)

Примечание: Я попытался событие RowDataBound, что был дан ответ в этом question. вот код:

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) 
{ 
    if (e.Row.RowType == DataControlRowType.DataRow) 
    { 
     System.Data.DataRow dr = ((System.Data.DataRowView)e.Row.DataItem).Row; 

     if (dr["Choice"].ToString() == "0") 
     { 
      ((Label)e.Row.FindControl("lblChoice")).Text = "No"; 
     } 
     else if (dr["Choice"].ToString() == "1") 
     { 
      ((Label)e.Row.FindControl("lblChoice")).Text = "Yes"; 
     } 
    } 
} 

Но это не работает. Я что-то упускаю? Должен ли я включать что-то в тег <ItemTemplate>?

+0

Возможный дубликат [GridView отображения текста вместо значений] (http://stackoverflow.com/questions/6702062/gridview-display-the-text-instead-of-values) – iceDragon

+0

@iceDragon У меня есть на самом деле попробовал событие RowDataBound из этой статьи, но я испугался, что он не указал на ответ, как назвать его .Net? ты знаешь как? спасибо (я также отредактирую этот вопрос и включу это) – wolfQueen

+1

Вы добавляете событие в инструмент GridView, подобный этому ​​ iceDragon

ответ

1

Насколько я понял, вы можете использовать функцию Render Property или связанное с строкой событие.

RenderProperty Function

RowDataBound Event

Оба ответа от этого question

Edit: Как вы спросили, как вызвать событие RowDataBound, он добавляется к тегу GridView, как это:

<asp:GridView ID="GridView1" runat="server" OnRowDataBound="GridView1_RowDataBound"></asp:GridView> 
+0

Dang. Я добавил его, и все! Это так просто! ughhhThanks mate, ты спас меня: D – wolfQueen

1

Без использования события RowBound вы можете сделать это

<ItemTemplate> 
    <asp:Label ID="lblChoice" runat="server" 
      Text='<%# Bind("Choice").Equals("1")? "Yes" : "No" %>'></asp:Label> 
</ItemTemplate> 
+0

Спасибо, я попробовал, и у меня ошибка на .equals, что я могу потерять? Должен ли я добавлять какие-либо ссылки или что-то еще? Еще раз спасибо – wolfQueen

+0

Я попробовал, и я получил сообщение об ошибке: «Имя« Bind »не существует в текущем контексте», я попытался заменить его Eval вместо Bind, теперь он запускается, но дает только результаты = No, хотя У меня 1/Да в контексте. – wolfQueen

+0

Было бы здорово, если бы вы помогли мне дальше, я только узнал, что некоторые из моих кодов несовместимы с событием RowDataBound, а im с ошибкой во время выполнения – wolfQueen

Смежные вопросы