Mcbaloo Ответов: 2

Отображение и скрытие кнопки gridview на основе значения ячейки в той же строке


У меня есть gridview в моем ASP.NET в моих столбцах gridview я хочу, чтобы кнопка в каждой строке показывала или скрывала, является ли значение ячейки той же самой ячейкой пустым или нулевым. например, я хочу, чтобы кнопка отображалась в каждой строке, которая имеет Signout_Time как null или empty. я написал код ниже. проблема, с которой я сталкиваюсь, заключается в том, что коды работают противоположным образом. Кнопки отображаются в строках с Signout_Time, в то время как кнопка в строках без значения видимости Signout_Time становится ложной. так не должно быть. Я также пытался изменить свои условия if, но это все равно не сработало

Что я уже пробовал:

<asp:GridView ID="GridView1" runat="server" AllowPaging="True" Height="326px" OnPageIndexChanging="GridView1_PageIndexChanging" PageSize="5" style="text-align: left; margin-left: 169px" Width="1069px" OnSelectedIndexChanged="GridView1_SelectedIndexChanged" OnRowDataBound="GridView1_RowDataBound" AutoGenerateColumns="False" OnRowCommand="GridView1_RowCommand" OnRowEditing="GridView1_RowEditing">
                        
                        <Columns>
                            <asp:BoundField HeaderText="S/N" DataField="SN" />
                            <asp:BoundField HeaderText="First Name" DataField="FirstName" />
                            <asp:BoundField HeaderText="Address" DataField="Address" />
                            <asp:BoundField HeaderText="Phone Number" DataField="PhoneNumber" />
                            <asp:BoundField HeaderText="Sex" DataField="Sex" />
                            <asp:BoundField HeaderText="Reason" DataField="Reason" />
                            <asp:BoundField HeaderText="SignIn" DataField="SignIn_Time" />
                            <asp:BoundField HeaderText="SignOut" DataField="Signout_Time" />
                           
                            <asp:TemplateField HeaderText="Action" Visible="True">
                                <ItemTemplate>
                                    <asp:Button ID="out" runat="server" Text="Sign out" CommandName="SignOut"  CommandArgument='<%#Eval("SN") %>'/>
                                </ItemTemplate>
                            </asp:TemplateField>
                        </Columns>
                        
                <PagerSettings FirstPageText="First" LastPageText="Last" Mode="NumericFirstLast" PageButtonCount="5" />
                        
                        
            </asp:GridView>





protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
       {


переключатель (e.Подряд.RowType)
{
дело DataControlRowType.Строкаданных:
DataRowView myDataRowView = (DataRowView)e. Row. DataItem;
if (String.IsNullOrEmpty(myDataRowView ["Signout_Time"].Метод toString()))
{
Состояние кнопки = (кнопка)e. Row.FindControl ("out");
if (status != null)
{
статус.Видимое = истинное;
}
}
перерыв;
}

}

2 Ответов

Рейтинг:
18

Suvendu Shekhar Giri

Результат противоположен ожидаемому, потому что условие if неверно.
Просто добавьте not до состояния, и он должен работать так, как ожидалось.

if (!String.IsNullOrEmpty(myDataRowView["Signout_Time"].ToString()))
{
  //rest of code


Пожалуйста, дайте мне знать, если это не поможет :)


Mcbaloo

это сработало идеально. мне пришлось изменить свой статус. visible = false. Это сработало именно так с решением, которое вы предоставили

Suvendu Shekhar Giri

Рад, что ваша проблема решена :)

Рейтинг:
12

Mcbaloo

Я обнаружил еще один более простой способ сделать это в моих ItemTemplae. вот что я сделал

<pre lang="ASP.NET"><asp:Button Visible='<%# string.IsNullOrEmpty(Eval("Signout_Time").ToString()) %>' runat="server" Text="Sign out" ID="out"  CommandName="SignOut" CommandArgument='<%#Eval("SN") %>'/>



Это тоже творило волшебство. Оба решения идеальны


Suvendu Shekhar Giri

Отлично!