Kan detta tillföra dig något? --> http://www.kursusmaterialer.dk/ASP.NET II/Dataset objektet/Paging.aspx
Hur får man fram värdet i en post i ett datagrid?.
8 svar · 325 visningar · startad av Prästen
Hur får man fram värdet i en post i ett datagrid?.
Kan detta tillföra dig något? --> http://www.kursusmaterialer.dk/ASP.NET II/Dataset objektet/Paging.aspx
..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>
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?
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.
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?.
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?
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.