Как изменить два тега в сетке вида templete, вызывая одну функцию? - PullRequest
0 голосов
/ 24 сентября 2019

В моем веб-приложении Asp.net у меня есть сетка.

В каждой строке я должен показать кнопку, и в зависимости от некоторых условий мне нужно:

  • Показать зеленым или серым (изменяется тег CssClass)

  • Включено или отключено (изменение тега Enabled)

Я хочу сделать вызов одной функции только один раз.

Итак, мой gridviewэто:

<asp:GridView ID="gvmylist" DataSourceID="mysqlds" runat="server" CellPadding="4" ForeColor="#333333" GridLines="None" AutoGenerateColumns="true" Font-Size="9pt">
                    <AlternatingRowStyle BackColor="White" />
                    <EditRowStyle BackColor="#7C6F57" />
                    <FooterStyle BackColor="#1C5E55" Font-Bold="True" ForeColor="White" />
                    <HeaderStyle BackColor="#1C5E55" Font-Bold="True" ForeColor="White" />
                    <PagerStyle BackColor="#666666" ForeColor="White" HorizontalAlign="Center" />
                    <RowStyle BackColor="#E3EAEB" />
                    <SelectedRowStyle BackColor="#C5BBAF" Font-Bold="True" ForeColor="#333333" />
                    <SortedAscendingCellStyle BackColor="#F8FAFA" />
                    <SortedAscendingHeaderStyle BackColor="#246B61" />
                    <SortedDescendingCellStyle BackColor="#D4DFE1" />
                    <SortedDescendingHeaderStyle BackColor="#15524A" />
                    <Columns>
                        <asp:TemplateField>
                            <ItemTemplate>
                                <asp:HyperLink ID="Link" runat="server" NavigateUrl='<%# String.Format("~/mypage.aspx?pren={0}&prest={1}&year={2}&num={3}", Eval("pren"), Eval("prest"), Eval("year"), Eval("num") ) %>' Text="Referto"></asp:HyperLink>
                            </ItemTemplate>
                        </asp:TemplateField>
                        <asp:TemplateField>
                            <ItemTemplate>
                                <asp:Button ID="myButton" runat="server" Text="Chiama"  Enabled='<%#checkIT(Eval("pren").ToString(), Eval("cod").ToString()) %>' CssClass='<%#checkIT_class(Eval("pren").ToString(), Eval("cod").ToString()) %>' />
                            </ItemTemplate>
                        </asp:TemplateField>
                    </Columns>
                    <EmptyDataTemplate>
                        <div style="text-align: center;">
                            <table>
                                <tr>
                                    <td style="padding: 5px;">
                                        <img src="images/man-thinking-1.jpg" height="128px" />
                                    </td>
                                    <td style="padding: 5px;">
                                        <h2>bla bla bla
                                    </td>
                                </tr>
                            </table>
                        </div>
                    </EmptyDataTemplate>

                </asp:GridView>

Как видите, у меня есть два метода:

  • CheckIT и

  • CheckIT_class

Этот метод выполняет ту же логику (вызов веб-службы), но первый возвращает true или false, второй должен возвращать имя класса.

Как вы можете себе представить, это неэффективно, поэтому мой вопрос:

  • Как вызвать однократную функцию и кнопку "построить" (включено / отключено, раскрасить ее и т. Д.)на основе результата функции?

Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...