ASPx.Net Как поймать изменение значения в элементе шаблона DDL - PullRequest
0 голосов
/ 20 сентября 2018

Я изо всех сил пытаюсь найти способ решить это.У меня есть сетка, и первый столбец - это DropDownList, определенный в шаблоне элемента:

            <asp:GridView ID="gvXYZ" runat="server" DataKeyNames="Serial, XYZValue"> 
                <Columns>    
                 <asp:TemplateField HeaderText="Status">
                        <ItemTemplate>
                            <asp:DropDownList ID="ddlStat" runat="server" OnSelectedIndexChanged="ddlStat_SelectedIndexChanged"><asp:ListItem>  </asp:ListItem><asp:ListItem>  </asp:ListItem><asp:ListItem>OK</asp:ListItem><asp:ListItem>NG</asp:ListItem></asp:DropDownList>
                        </ItemTemplate>
                        <FooterStyle HorizontalAlign="Center" VerticalAlign="Middle" Wrap="False" />
                        <HeaderStyle HorizontalAlign="Center" VerticalAlign="Middle" Wrap="False" />
                        <ItemStyle HorizontalAlign="Center" VerticalAlign="Middle" Wrap="False" />
                    </asp:TemplateField>
                    </Columns>   
            </asp:GridView>

Пользователю предоставляется пустой выбор, OK или NG в качестве возможных выборов.Как я могу запустить либо сторону JavaScript, либо VB для запуска функции, когда пользователь делает какой-либо выбор в любом из DDL в сетке?Чтобы выполнить то, что просили, пользователь должен выбрать либо OK, либо NG.Я пытаюсь связать кнопку Сохранить с тем, что сетка была завершена.Я знаю, что могу запустить JavaScript в раскрывающемся списке HTML, поэтому я попытался создать функцию для этого, и из статьи, которую я нашел, я пытался запустить метод VB из функции javascript:

        function ddlStat_SelectedIndexChanged() {
            var someValueToPass = 'Hello server';

            __doPostBack('CustomPostBack', someValueToPass);
        }

сценарий никогдаработает, обратной передачи не происходит и код стороны VB:

Protected Sub ddlStat_SelectedIndexChanged(sender As Object, e As EventArgs)
    Dim x As Integer
    For x = 1 To 10 : x = x + 1 : Next
End Sub

также никогда не запускается.Я подумал сделать это на стороне VB, потому что я думаю, что мне легче получить доступ к свойствам сетки, например, к числу строк, чтобы я мог проверить DDL в каждом из них.Спасибо вам за это и задавайте вопросы, если мне не ясно.

1 Ответ

0 голосов
/ 20 сентября 2018

Настройка AutoPostback свойство раскрывающегося списка должно вызывать обратный вызов на стороне сервера.JS-функцию можно вызвать с помощью события HTML onchange

<asp:DropDownList ID="MyDropDown" runat="server" AutoPostBack="True" 
         OnSelectedIndexChanged="SelectedChange" onchange="YourChangeFun(this);">
</asp:DropDownList>

Javascript:

<script type="text/javascript">
      function YourChangeFun(ddl)
      {
         alert(ddl.selectedIndex);
      }
</script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...