Laden...

[asp.net c# + javascript]Datepicker in GridView

Erstellt von tonikln vor 12 Jahren Letzter Beitrag vor 12 Jahren 1.429 Views
T
tonikln Themenstarter:in
137 Beiträge seit 2006
vor 12 Jahren
[asp.net c# + javascript]Datepicker in GridView

Hallo zusammen,

ich habe eine GridView in meiner Anwendung, wo es möglich ist, das eine Zeile sich im Editmodus befindet. Als edittemplate habe ich eine TextBox eingefügt und einem Datepicker. Das Kalendersteuerelement popt dann auf.

Wenn ich ein datum auswähle, bekomme ich immer folgende Fehlermeldung:
'window.opener.document.forms.0.elements[...]' is null or not an object'

Das lsutige ist aber, dass außerhalb der GridView alles einwandfrei funktioniert.
Kann das sein, dass ich die TextBox in der GridView anders ansprechen muss?

Das ganze ist wie folgt aufgebaut:
Default .aspx

function PopupPicker(ctl,w,h)
       {
    
          var PopupWindow=null;
          settings='width='+ w + ',height='+ h + ', location=no,directories=no, menubar=no,toolbar=no,status=no, scrollbars=no,resizable=no, dependent=no';
          PopupWindow=window.open('DatePicker.aspx?Ctl=' + 
             ctl,'DatePicker',settings);
          PopupWindow.focus();
       }
<EditItemTemplate>
                   <asp:TextBox ID="TextBox22" runat="server" 
                        Text='<%# Bind("[ows_Spalte]") %>' 
                        Font-Size="XX-Small"></asp:TextBox><a href="javascript:PopupPicker('TextBox22', 250, 250)" > Kalender anzeigen </a>
                </EditItemTemplate>

In Datepicker.aspx:

function SetDate(dateValue)
   {   
      // retrieve from the querystring the value of the Ctl param,
      // that is the name of the input control on the parent form
      // that the user want to set with the clicked date
      ctl = window.location.search.substr(1).substring(4);
      
      
      var d = new Date(dateValue);

      
      var myStr = new String();
      myStr = dateValue;
      
       
      thisForm = window.opener.document.forms[0].elements[ctl].value = dateValue.split(".")[2] + "-" +dateValue.split(".")[1] + "-" + dateValue.split(".")[0];

      self.close();
   }

Kann mir da evtl jemand helfen ?:(

Vielen Dank im Voraus


90% aller Fehler sitzen zwichen tastatur und Stuhl!!!

3.170 Beiträge seit 2006
vor 12 Jahren

Hallo,

Dein Problem ist die ID "TextBox22", die es so auf dem Client nicht mehr gibt.
Das könnte ja auch nicht funktionieren, denn die einzelnen IDs müssen ja für jede Zeile eindeutig sein. Deshalb pappt Dir ASP.NET da noch den NamingContainer vornedran und eine Nummer hintendran und das ganze ist dann über Control.ClientID verfügbar und muss auch so vom Javascript aus angesprochen werden.

Du bräuchtest also statt

<a href="javascript:PopupPicker('TextBox22', 250, 250)" > Kalender anzeigen </a>

eher sowas:

<a href="<%# "javascript:PopupPicker('" + Container.FindControl("TextBox22").ClientID + "', 250, 250)" %>">

Gruß, MarsStein

Non quia difficilia sunt, non audemus, sed quia non audemus, difficilia sunt! - Seneca