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!!!
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