Как я могу изменить цвет этой кнопки «CheckIn» при создании ListViewItem? - PullRequest
1 голос
/ 03 октября 2019

Мне бы хотелось, чтобы цвет кнопки 'CheckIn' отображался зеленым в зависимости от значения некоторых других данных в моем коде, но я не могу получить доступ к этой кнопке за пределами ее метода onClick. Я должен иметь доступ к нему по его идентификатору, но по какой-то причине не могу

Image of ListView

<asp:ListView
                ID="lvInstructors"
                runat="server"
                itemwDataBound="lvDataBound"
                itemCommand="lvCommand"
                Visible="true">
                <LayoutTemplate>
                    <div class="container" id="mainContent">
                        <asp:PlaceHolder ID="itemPlaceHolder" runat="server" />
                    </div>
                </LayoutTemplate>

                <ItemTemplate>
                    <div class="row instructorItem" id="instructorItem">
                        <asp:HiddenField ID="sessionID" runat="server" Value='<%#Eval("SessionID")%>' />
                        <asp:HiddenField ID="hasChckedIn" runat="server" Value='<%#Eval("hasCheckedIn")%>' />
                        <div class="col-2 sessionStartTimeDiv">
                            <p class="sessionStartTime"><%#Eval("SessionStartTime")%></p>
                        </div>

                        <div class="col-2 instructorHeadshotDiv">
                            <asp:Image class="instructorHeadshot" runat="server" src='<%#Eval("InstructorHeadshot")%>' />
                        </div>

                        <div class="col-5 sessionInfoDiv">
                            <h3 class="instructorName"><%#Eval("InstructorName")%></h3>
                            <p class="sessionInfo"><%#Eval("SessionInfo")%></p>
                        </div>

                        <div class="col-3 checkInBtnDiv">

                            <asp:Button class="checkInBtn" ID="checkInBtn" runat="server" OnClick="CheckInBtn_Click" Text="Check-In"></asp:Button>
                        </div>
                    </div>
                    <hr />
                </ItemTemplate>

                <EmptyDataTemplate>
                    <br />
                    <br />
                    No Sessions to Display.
                </EmptyDataTemplate>
            </asp:ListView>

Как я могу получить к нему доступ в onClick ():

protected void CheckInBtn_Click(object sender, EventArgs e)
    {
        Button checkInBtn = (Button)sender;
        checkInBtn.Text = "Check-Out";
        checkInBtn.BackColor = Color.Green;
        ...
    }

(Дополнительный вопрос: почему SelectedIndex возвращает -1, когда я нажимаю эту кнопку?)

Ответы [ 2 ]

1 голос
/ 04 октября 2019

Вам необходимо получить доступ к вашему событию Button on ItemDataBound для ListView, чтобы условно изменить цвет Button.

Вот ссылка, которая может помочь вам в этом:

событие, связанное с данными элемента списка данных, с проблемами при изменении цвета элемента bg при условии

1 голос
/ 04 октября 2019

В вашем событии itemwDataBound найдите нужное значение и установите цвет кнопки там. Также вы можете установить значение в аргументе команды кнопок, а затем получить его в событии щелчка.

...