---
title: "C# och DataSet - objekt kan inte omvandlas till DataSet"
type: "forum-thread"
url: "https://www.webforum.nu/amne/dotnet/86101-c-och-dataset-objekt-kan-inte-omvandlas-till-dataset"
topic: ".NET"
topic_url: "https://www.webforum.nu/amne/dotnet"
author: "m_soderlund"
published: "2003-09-16T06:55:47.000Z"
updated: "2003-09-22T11:50:43.000Z"
replies: 4
views: 972
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/dotnet/86101-c-och-dataset-objekt-kan-inte-omvandlas-till-dataset"
---

# C# och DataSet - objekt kan inte omvandlas till DataSet

## #1 — m_soderlund, 2003-09-16T06:55Z

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

Permalänk: https://www.webforum.nu/p/86101

## #2 — PatrikB, 2003-09-16T07:31Z

har du provat:

```
ds = [b](dataset)[/b]ViewState["DataSet"];
```

Har för mig att det är sättet man typar en variabel

cya,
/PatrikB

Permalänk: https://www.webforum.nu/p/1157354

## #3 — m_soderlund, 2003-09-16T07:37Z

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å?

Permalänk: https://www.webforum.nu/p/1157363

## #4 — m_soderlund, 2003-09-16T15:41Z

Det fungerade ej. :(
Återkommer efter nattens kodstrapatser. :D

Permalänk: https://www.webforum.nu/p/1157681

## #5 — m_soderlund, 2003-09-22T11:50Z

Den här koden fungerade utmärkt:

```
ds = ([b]D[/b]ata[b]S[/b]et)ViewState["DataSet"];
```

Permalänk: https://www.webforum.nu/p/1164138

---

Tråden på webben: https://www.webforum.nu/amne/dotnet/86101-c-och-dataset-objekt-kan-inte-omvandlas-till-dataset
