webForumDet fria alternativet

En liten enkel fråga bara

.NET

8 svar · 325 visningar · startad av Prästen

Medlem sedan dec. 2000537 inlägg
Frågan#1

Hur får man fram värdet i en post i ett datagrid?.

Medlem sedan sep. 20026 425 inlägg
#2

Kan detta tillföra dig något? --> http://www.kursusmaterialer.dk/ASP.NET II/Dataset objektet/Paging.aspx

Medlem sedan sep. 20026 425 inlägg
#3

..eller om du inte vill ha paging:

<%@ 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

</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 dbms^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" Gridlines="None">
        </asp:dataGrid>
    </form>

</body>
</html>
Medlem sedan dec. 2000537 inlägg
#4

ojdå, det var inte så jag menade, jag menade såhär:

1. du har ett datagrid.
2. du uppdaterar ditt datagrid
3. du vill lägga in de nya värdet som du ändrat i databasen
4. hur gör man för att få fram värdet som man ändrat i datagriden, för att slutligen lägga in det i databasen?

Medlem sedan jan. 20012 204 inlägg
#5

Finns flera olika sätt. Ett ör att titta på den rad som blivit uppdaterad och göra en "Instert-sats". Annars kan du kopiera hela allt och lägga in. Läs på https://www.asp.net där finns någon beskrivning i deras guide.

Medlem sedan dec. 2000537 inlägg
#6

Här är min kod:

<%@ Page Language="C#" Debug="true" %>
<%@ import Namespace="System.Web.UI.WebControls" %>
<%@ import Namespace="System.Data" %>
<%@ import Namespace="System.Data.OleDb" %>
<script runat="server">

    public void MyDataGrid_Edit(Object sender, DataGridCommandEventArgs e) {
    MyDataGrid.EditItemIndex = (int)e.Item.ItemIndex; // vilket row i datagriden, inte vilken row i databasen
    BindDataGrid();
    }

    public void MyDataGrid_Update(Object sender, DataGridCommandEventArgs e) {
    string vardet = ((TextBox)e.Item.Cells[3].Controls[0]).Text;
    Response.Write(vardet);
    MyQueryMethod("UPDATE fragor SET fraga='" + vardet + "' WHERE ID=" + MyDataGrid.DataKeys[(int)e.Item.ItemIndex]);
    MyDataGrid.EditItemIndex = -1;
    BindDataGrid();
    }

    public void MyDataGrid_Cancel(Object sender, DataGridCommandEventArgs e) {
    MyDataGrid.EditItemIndex = -1;
    BindDataGrid();
    }

    public void MyDataGrid_Delete(Object sender, DataGridCommandEventArgs e) {
    //Response.Write("Delete");
    //Response.Write((int)e.Item.ItemIndex);
    //Response.Write("<BR>"+MyDataGrid.DataKeyField);
    //Response.Write("<BR>"+MyDataGrid.SelectedIndex);
    //Response.Write("<BR>"+MyDataGrid.DataKeys[(int)e.Item.ItemIndex]); // just mygrid.datakeys, gör så man får tag i ID numret som row:et i datagriden har i databasen.

    MyQueryMethod("DELETE from fragor where ID="+MyDataGrid.DataKeys[(int)e.Item.ItemIndex]);
    BindDataGrid();
    }

    DataSet MyQueryMethod(string sqlstring) {
    DataSet mittDataSet=new DataSet();
    OleDbConnection dbConnection = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Ole DB Services=-4; Data Source=C:\\Documents and Settings\\olle\\Mina dokument\\WebMatrixServer\\question\\newquiz.mdb");
    OleDbDataAdapter myDataAdapter = new OleDbDataAdapter(sqlstring, dbConnection);
    myDataAdapter.Fill(mittDataSet, "fragor");
    return mittDataSet;
    }

    void BindDataGrid() {
    MyDataGrid.DataSource=MyQueryMethod("SELECT * FROM fragor");
    MyDataGrid.DataBind();
    }

    protected void Page_Load(Object sender, EventArgs e) {
    BindDataGrid();
    }

    void SparaButton_Click(object sender, EventArgs e) {
    MyQueryMethod("INSERT INTO fragor (fraga) VALUES ('" + LaggTillTextBox.Text + "')");
    BindDataGrid();
    LaggTillTextBox.Text=null;
    }

</script>
<html>
<head>
</head>
<body>
    <form runat="server">
        <div align="left">
            <asp:DataGrid id="MyDataGrid" runat="server" DataKeyField="ID" OnCancelCommand="MyDataGrid_Cancel" OnUpdateCommand="MyDataGrid_Update" OnEditCommand="MyDataGrid_Edit" OnDeleteCommand="MyDataGrid_Delete" EnableViewState="true" AutoGenerateColumns="true">
                <Columns>
                    <asp:ButtonColumn Text="Delete" CommandName="Delete"></asp:ButtonColumn>
                    <asp:EditCommandColumn ButtonType="LinkButton" UpdateText="Update" CancelText="Cancel" EditText="Edit"></asp:EditCommandColumn>
                </Columns>
            </asp:DataGrid>
        </div>
        <div align="left">
        </div>
        <div align="left">Lägg till en fråga:<asp:TextBox id="LaggTillTextBox" runat="server"></asp:TextBox>
            <asp:Button id="SparaButton" onclick="SparaButton_Click" runat="server" Text="Spara"></asp:Button>
        </div>
    </form>
</body>
</html>

Vad som är lite underligt är att när jag får fram värdet i textboxen som jag nyss ändrade, så är det det gamla värdet i textboxen som stod där först, som jag får fram, alltså inte det "ändrade värdet"?? . skumt, nån som vet vad som kan vara fel?.

Medlem sedan dec. 2000537 inlägg
#7

nån som e duktig på det här med asp.net och vill hjälpa prästen? :)

Medlem sedan dec. 2000537 inlägg
#8

Jag har försökt flera dagar nu och kommer inte fram till nån lösning. Hur kommer det sig att den "uppdaterar" med det gamla värdet och inte med det nya?. Nån som vet?

Medlem sedan apr. 20012 266 inlägg
#9

Jag är säker på att de som kan och har tid svarar på din fråga utan att du hela tiden "puttar" upp tråden.

Svaret på din fråga bör finns här: http://samples.gotdotnet.com/quickstart/. Titta under ASP.NET.

256 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
122 ms — deklarationer (db)
0 ms — hämta statistik (cache)
131 ms — hämta tråd, inlägg och bilagor (db)
120 ms — ändringar (db)