Получение правильной строки в GridView - PullRequest
0 голосов
/ 12 ноября 2010

У меня есть GridView, где одна из ячеек содержит TextBox с прикрепленным к нему CalendarExtender.Другая ячейка содержит кнопку, которая вызывает CalendarExtender.После выбора даты на клиентской стороне запускается функция checkDate, в конце которой я хочу вызвать событие кнопки на стороне сервера.Моя единственная проблема в том, как мне определить, какую строку щелкнул пользователь, чтобы я мог вызвать событие правой кнопки из javascript?

Вот мой GridView:

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" BackColor="White"
    BorderColor="#999999" BorderStyle="None" BorderWidth="1px" CellPadding="3" GridLines="Vertical"
    OnRowCreated="GridView1_RowCreated" OnRowDataBound="GridView1_RowDataBound" OnRowCommand="GridView1_RowCommand">
    <Columns>
        <asp:TemplateField HeaderText="Movie ID">
            <ItemTemplate>
                <asp:Label runat="server" ID="lblMovieId" Text='<%#Eval("MovieId") %>'></asp:Label>
            </ItemTemplate>
        </asp:TemplateField>
        <asp:TemplateField HeaderText="Movie Name">
            <ItemTemplate>
                <%#Eval("MovieName") %></ItemTemplate>
        </asp:TemplateField>
        <asp:TemplateField HeaderText="Return Date">
            <ItemTemplate>
                <asp:TextBox runat="server" ID="txtRetDate" Text='<%# ((DateTime)Eval("ReturnDate")).ToShortDateString()%>'
                    BackColor="#EEEEEE" BorderStyle="None"></asp:TextBox>
                <asp:CalendarExtender ID="CalendarExtender1" runat="server" PopupButtonID="btnUpdate"
                    TargetControlID="txtRetDate" Format="dd/MM/yyyy" OnClientDateSelectionChanged="checkDate" >
                </asp:CalendarExtender>
            </ItemTemplate>
        </asp:TemplateField>
        <asp:TemplateField HeaderText="" HeaderStyle-Width="135px">
            <ItemStyle VerticalAlign="Top" />
            <ItemTemplate>
                <asp:Button runat="server" ID="btnUpdate" Text="Update" CommandName="Update" />
                <asp:Button runat="server" ID="btnRemove" Text="Remove" CommandName="Remove" />
            </ItemTemplate>
        </asp:TemplateField>
    </Columns>
</asp:GridView>

1 Ответ

0 голосов
/ 12 ноября 2010

Я не понимаю, почему вы должны вызывать обработчик событий Button_Click на стороне сервера из JS ... Если вам нужно вызвать «что-то» на стороне сервера из javascript как последнюю операцию, выполняемую в функции javascript, вы можете использовать JQuery / Javascript для вызова этой функции. Вы должны реорганизовать свой код, поместив код нажатия кнопки на стороне сервера в метод, который можно вызывать как со стороны сервера Button_Click, так и из javascript ...

На стороне сервера я предполагаю, что вы событие button_click. Вы должны изменить его, как показано ниже:

Public void Button_Click(object sender,eventArgs e){

FuntionIWantCall();
}


//this is the code that was into the button click befeore refactoring:

private void FuntionIWantCall(){

//Do something on the server side
}


//this is the function you can call from javascript

[WebMethod]
public static void CalledFromJS(){
FuntionIWantCall();
}  

На вашей странице вы должны добавить менеджер скриптов:

<asp:ScriptManager ID="ScriptManager1" runat="server"     EnablePageMethods="True"></asp:ScriptManager>


//at the end of your javascript function

PageMethods.CalledFromJS();
...