har du provat:
ds = [b](dataset)[/b]ViewState["DataSet"];
Har för mig att det är sättet man typar en variabel
cya,
/PatrikB
4 svar · 955 visningar · startad av m_soderlund
Jag använder koden nedan för paging i C#, mest för att testa.
Motsvarande kod i VB.NET fungerar helt felfritt, men när jag kör denna C#-version
så får jag detta felmeddelande:
Description: An error occurred during the compilation of a resource required to service this request. Please review the following specific error details and modify your source code appropriately.
Compiler Error Message: CS0029: Cannot implicitly convert type 'object' to 'System.Data.DataSet'
Source Error:
Line 37: void DoDataBind()
Line 38: {
Line 39: ds = ViewState["DataSet"];
Line 40: dg1.DataSource = ds.Tables["tbl"].DefaultView;
Line 41: dg1.DataBind();
Naturligtvis har det att göra med
konvertering av objekt till DataSet, men hur konverterar jag? Här kommer hela min C#-kod (fetmarkerat = där problemet ligger):
<%@ Page Language="C#" Strict="False" Debug="True" %>
<%@ import Namespace="System.Data" %>
<%@ import Namespace="System.Data.OleDb" %>
<script runat="server">
DataSet ds = new DataSet();
void Page_Load()
{
if(!Page.IsPostBack)
{
string CnStr = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" + Server.MapPath("../db2.mdb");
string SQL = "SELECT Namn FROM tbl";
OleDbConnection Cn = new OleDbConnection(CnStr);
OleDbDataAdapter objAdapter = new OleDbDataAdapter(SQL, Cn);
objAdapter.Fill(ds, "tbl");
dg1.DataSource = ds.Tables["tbl"].DefaultView;
dg1.DataBind();
ViewState["DataSet"]=ds;
Cn.Close();
}
}
void ChangePage(Object objSender, DataGridPageChangedEventArgs e)
{
dg1.CurrentPageIndex = e.NewPageIndex;
DoDataBind();
}
void DoDataBind()
{
[b]ds = ViewState["DataSet"];[/b]
dg1.DataSource = ds.Tables["tbl"].DefaultView;
dg1.DataBind();
}
</script>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<title>C# paging^DataGrid & DataSet</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
</head>
<body>
<form id="sharp" runat="server">
<asp:datagrid id="dg1" runat="server" AllowPaging="True" PageSize="10" OnPageIndexChanged="ChangePage"
AutoGenerateColumns="True" Gridlines="None">
<PagerStyle Mode="NumericPages" />
</asp:dataGrid>
</form>
</body>
</html>
Motsvarande kod i VB.NET, kod som fungerar utmärkt:
<%@ Page Language="VB" Strict="False" Debug="True" %>
<%@ import Namespace="System.Data" %>
<%@ import Namespace="System.Data.Oledb" %>
<script runat="server">
Dim objDataset as New Dataset()
Sub Page_Load()
If Not Page.IsPostBack Then
Dim CnStr as string = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & server.mappath("../db2.mdb")
Dim SQL as string = "SELECT Namn FROM tbl"
Dim Cn as new OleDbConnection(CnStr)
Dim objAdapter as new OledbDataAdapter(SQL, Cn)
objAdapter.Fill(objDataSet, "tbl")
dg1.DataSource = objDataSet.Tables("tbl").DefaultView
dg1.DataBind()
ViewState("Dataset")=objDataSet
Cn.Close()
End if
End sub
Sub ChangePage(objSender as Object, e as DataGridPageChangedEventArgs)
dg1.CurrentPageIndex = e.NewPageIndex
DoDataBind()
End sub
Sub DoDataBind()
objDataset = ViewState("Dataset")
dg1.DataSource = objDataset.Tables("tbl").Defaultview
dg1.DataBind()
End Sub
</script>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<title>VB paging^DataGrid & DataSet</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
</head>
<body>
<form runat="server">
<asp:datagrid id="dg1" runat="server" AllowPaging="True" PageSize="10" OnPageIndexChanged="ChangePage"
AutoGenerateColumns="True" Gridlines="None">
<PagerStyle Mode="NumericPages" />
</asp:dataGrid>
</form>
</body>
</html>
Tacksam för hjälp! :D
har du provat:
ds = [b](dataset)[/b]ViewState["DataSet"];
Har för mig att det är sättet man typar en variabel
cya,
/PatrikB
Tack för svaret, PatrikB! Jag har ej möjlighet att testa det hemma just nu, men på https://www.dileno.hel.nu/asp/c-sharp_paging.aspx så fungerar inga ASP.NET-sidor som använder sig av C#.
Däremot fungerar https://www.dileno.hel.nu/asp/vb_paging.aspx finfint... Vet någon vad DET kan bero på?
Det fungerade ej. :(
Återkommer efter nattens kodstrapatser. :D