Кнопка GridView с условием

У меня есть gridview с 3 столбцами Имя, фамилия, изменение (столбец ButtonField), который заполняется из SqlDataReader со следующим кодом

               SqlCommand sqlCommand = new SqlCommand("select * from Empl where userId ='" + userid + "'", sqlConnection);
            sqlConnection.Open();

            SqlDataReader reader = sqlCommand.ExecuteReader();

            GridView1.DataSource = reader;
            GridView1.DataBind();

В моей базе данных есть 4 столбца UserId, Имя, Фамилия, Изменить (бит). Как я могу показать изменение кнопки только в том случае, если столбец Change (bit) имеет значение true внутри базы данных?


person pikk    schedule 18.08.2011    source источник


Ответы (1)


Вы можете сделать как..

<asp:TemplateField>
      <ItemTemplate>
         <asp:Button ID="btnChange" runat="server" Text="Change" 
              Visible='<%# (Boolean) Eval("Change") %>' />
      </ItemTemplate>
 </asp:TemplateField>

Как вы упомянули в комментарии, вы получаете сообщение об ошибке в приведенном выше коде, вы пытаетесь...

Visible='<%# Convert.ToBoolean(Eval("Change")) == true ? true : false %>' 
person Muhammad Akhtar    schedule 18.08.2011
comment
хм, я попробовал это, но получил ошибку code ‹Столбцы› ‹asp:ButtonField ButtonType=Button CommandName=Select HeaderText=Approve ShowHeader=True Text=Approve Visible='‹%# (логическое значение) Eval(изменено) %›' /› ‹/Столбцы› - person pikk; 18.08.2011
comment
Это не будет работать для ButtonField, вы должны сделать его полем шаблона. - person Muhammad Akhtar; 18.08.2011
comment
ты имеешь в виду вот так? code ‹Столбцы› ‹asp:TemplateField› ‹ItemTemplate› ‹asp:Button ID=btnChange runat=server Text=Change Visible='‹%# (Boolean) Eval(Changed) %›' /› ‹/ItemTemplate› ‹/asp :TemplateField› ‹/Columns› code Я снова получаю сообщение об ошибке. - person pikk; 18.08.2011
comment
Сведения об исключении: System.InvalidCastException: указанное приведение недействительно. - person pikk; 18.08.2011
comment
вы можете изменить это Visible='‹%# (Boolean) Eval(Change) %›' с помощью Visible='‹%# Convert.ToBoolean(Eval(Change)) == true ? правда : ложь %›' - person Muhammad Akhtar; 18.08.2011
comment
@pikk позвольте нам продолжить обсуждение в чате - person Muhammad Akhtar; 18.08.2011