Jag har här lite kod som gör så att radmarkeringen i en GridView stannar vid den markerade raden. Jag har använt det flera gånger och det fungerar perfekt. Hur ser den resulterande html-koden ut? Diven id=divTest finns bara i en vy. Jag skickade hela koden.Vad menar du med resulterande html-kod? Om View2 blir aktiv kommer det såvitt jag kan förstå inte finnas något element som har id=divTest, vilket gör att javascriptet kräks.Fixerad radmarkering i GridView
<%@ Page Language="vb" Debug="true" EnableEventValidation = "false" maintainscrollpositiononpostback="true" %>
<script runat="server">
Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Dim a(100) As String
Dim i As Integer
For i = 0 To 100
a(i) = i
Next
GridView1.DataSource = a
GridView1.DataBind()
If Not Me.Page.IsPostBack Then
End If
End Sub
Sub GridView1_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles GridView1.SelectedIndexChanged
GridView1.Rows(GridView1.SelectedIndex).BackColor = Drawing.Color.Aqua
End Sub
</script>
<html>
<head>
<script type="text/javascript">
window.onload = function () {
var strCook = document.cookie;
if (strCook.indexOf("!~") != 0) {
var intS = strCook.indexOf("!~");
var intE = strCook.indexOf("~!");
var strPos = strCook.substring(intS + 2, intE);
document.getElementById("divTest").scrollTop = strPos;
}
}
function SetDivPosition() {
var intY = document.getElementById("divTest").scrollTop;
document.title = intY;
document.cookie = "yPos=!~" + intY + "~!";
}
</script>
</head>
<body>
<form id="form1" runat="server">
<div style="width:500px; height:200px; overflow-y:scroll; overflow-x:hidden;" runat="server" id="divTest" onscroll="SetDivPosition()">
<asp:GridView ID="GridView1" runat="server" AutoGenerateSelectButton="True">
</asp:GridView>
</div>
</form>
</body>
</html>
Nu skall jag lägga in en GridView i en MultiView och då funkar det inte , får följande felmeddelande:
Körningsfel i JavaScript: Det går inte att ange egenskapen scrollTop för en referens som är odefinierad eller null.
HTML-koden med MultiView ser ut så här:
<body>
<form id="form1" runat="server">
<div>
<asp:MultiView ID="MultiView1" runat="server">
<asp:View ID="View1" runat="server">
<div style="width:500px; height:200px; overflow-y:scroll; overflow-x:hidden;" runat="server" id="divTest" onscroll="SetDivPosition()">
<asp:GridView ID="GridView1" runat="server" AutoGenerateSelectButton="True">
</asp:GridView>
</div>
</asp:View>
<asp:View ID="View2" runat="server">
<div>
XXXXXXX
</div>
</asp:View>
</asp:MultiView>
</div>
</form>
</body>
Det som strular är säkerligen PostBack!
Är det någon som har en idé hur man kan komma förbi detta problem?
Sv: Fixerad radmarkering i GridView
Finns det ett element med id=divTest i samtliga vyer?Sv:Fixerad radmarkering i GridView
Sv: Fixerad radmarkering i GridView
Med resulterande html-kod menar jag det som besökarens webbläsare visar (det du postat är asp-koden som servern använder för att generera HTML).