2010-11-12 2 views
0

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

Вот мой 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> 

ответ

0

Я не понимаю, почему вы должны вызвать обработчик события 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(); 
+0

Когда CalendarExtender запускается с помощью кнопки, на стороне сервера событие button_click баттона не срабатывает. Вот почему я должен запускать его из javascript, когда я закончил. В вашем ответе я до сих пор не знаю, по какой строке пользователь нажал кнопку (которая появляется в каждой строке), и мне нужно, чтобы она извлекала данные из этой строки для моего кода за событием. – Guy

+0

Можете ли вы отправить исходный код gridView? (Просто «HTML») –

+0

Хорошо, я добавил упрощенную версию моего GridView – Guy

Смежные вопросы