Hej! nyt spørgsmål!
Jeg sidder og leger med det, men nå¨r jeg nu gerne vil have textboxe i mit grid, hvordan undlader jeg så at griddet præsenetere data to gange.
aspx ----------------------------------------------------------------------------
<%@ Page language="c#" Codebehind="Editerbar.aspx.cs" AutoEventWireup="false" Inherits="TestAfTabeller.Editerbar" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
<HEAD>
<title>Editerbar</title>
<meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1">
<meta name="CODE_LANGUAGE" Content="C#">
<meta name="vs_defaultClientScript" content="JavaScript">
<meta name="vs_targetSchema" content="
http://schemas.microsoft.com/intellisense/ie5"> </HEAD>
<body MS_POSITIONING="GridLayout">
<form id="Form1" method="post" runat="server">
<asp:DataGrid id="grid" style="Z-INDEX: 101; LEFT: 64px; POSITION: absolute; TOP: 32px" runat="server"
BackColor="White" ForeColor="Black" BorderColor="#999999" BorderStyle="Solid" BorderWidth="1px"
CellPadding="3" GridLines="Vertical">
<FooterStyle BackColor="#CCCCCC"></FooterStyle>
<SelectedItemStyle Font-Bold="True" ForeColor="White" BackColor="#000099"></SelectedItemStyle>
<AlternatingItemStyle BackColor="#CCCCCC"></AlternatingItemStyle>
<HeaderStyle Font-Bold="True" ForeColor="White" BackColor="Black"></HeaderStyle>
<Columns>
<asp:TemplateColumn HeaderText="T">
<ItemTemplate>
<asp:TextBox id=txtQty runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.T") %>' Width="40px">
</asp:TextBox>
</ItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderText="S">
<ItemTemplate>
<asp:TextBox id=txtS Runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.S") %>' Width="40px">
</asp:TextBox>
</ItemTemplate>
</asp:TemplateColumn>
</Columns>
<PagerStyle HorizontalAlign="Center" ForeColor="Black" BackColor="#999999"></PagerStyle>
</asp:DataGrid>
<asp:Button id="Button1" style="Z-INDEX: 102; LEFT: 368px; POSITION: absolute; TOP: 104px" runat="server"
Text="Button"></asp:Button>
<asp:Button id="Button2" style="Z-INDEX: 103; LEFT: 368px; POSITION: absolute; TOP: 144px" runat="server"
Text="Indsæt i tabellen"></asp:Button>
</form>
</body>
</HTML>
C# ------------------------------------------------------------------------------
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
namespace TestAfTabeller
{
/// <summary>
/// Summary description for CreateTable.
/// </summary>
public class CreateTable : System.Web.UI.Page
{
protected System.Web.UI.WebControls.TextBox tablename;
protected System.Web.UI.WebControls.Label Label1;
protected System.Web.UI.WebControls.CheckBox allversions;
protected System.Web.UI.WebControls.DropDownList versions;
protected System.Web.UI.WebControls.Button OpretTabel;
protected System.Web.UI.WebControls.Button addfields;
protected System.Web.UI.WebControls.TextBox fieldname;
protected System.Web.UI.WebControls.TextBox lenght;
protected System.Web.UI.WebControls.CheckBox primarykey;
protected System.Web.UI.WebControls.CheckBox ForeignKey;
protected System.Web.UI.WebControls.Label Label2;
protected System.Web.UI.WebControls.Label Label3;
protected System.Web.UI.WebControls.Label Label4;
protected System.Web.UI.WebControls.Label Label5;
protected System.Web.UI.WebControls.DataGrid grid;
private static ArrayList arl = new ArrayList();
private static int counter = 0;
private void Page_Load(object sender, System.EventArgs e)
{
if(!IsPostBack)
{
this.grid.DataSource = GetData();
this.grid.DataBind();
}
}
#region Web Form Designer generated code
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: This call is required by the ASP.NET Web Form Designer.
//
InitializeComponent();
base.OnInit(e);
}
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.OpretTabel.Click += new System.EventHandler(this.OpretTabel_Click);
this.addfields.Click += new System.EventHandler(this.addfields_Click);
this.grid.CancelCommand += new System.Web.UI.WebControls.DataGridCommandEventHandler(this.grid_CancelCommand);
this.grid.EditCommand += new System.Web.UI.WebControls.DataGridCommandEventHandler(this.grid_EditCommand);
this.grid.UpdateCommand += new System.Web.UI.WebControls.DataGridCommandEventHandler(this.grid_UpdateCommand);
this.grid.DeleteCommand += new System.Web.UI.WebControls.DataGridCommandEventHandler(this.grid_DeleteCommand);
this.Load += new System.EventHandler(this.Page_Load);
}
#endregion
public void BindGrid()
{
this.grid.DataSource = GetData();
this.grid.DataBind();
}
public ArrayList GetData()
{
return arl;
}
private void grid_CancelCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
this.grid.EditItemIndex = -1;
BindGrid();
}
private void grid_DeleteCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
int rowToDelete = e.Item.ItemIndex;
HoldInfoAtFields h2 = null;
foreach (HoldInfoAtFields h in arl)
{
if(h.ID == rowToDelete)
{
h2 = h;
break;
}
}
arl.Remove(h2);
BindGrid();
}
private void grid_EditCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
this.grid.EditItemIndex = (int)e.Item.ItemIndex;
BindGrid();
}
private void grid_UpdateCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
string id = e.Item.Cells[3].Text;
string name = ((TextBox)e.Item.Cells[7].Controls[0]).Text;
string length = ((TextBox)e.Item.Cells[4].Controls[0]).Text;
bool pk = Convert.ToBoolean(((TextBox)e.Item.Cells[5].Controls[0]).Text);
bool fk = Convert.ToBoolean(((TextBox)e.Item.Cells[6].Controls[0]).Text);
foreach (HoldInfoAtFields h in arl)
{
if(h.ID == Convert.ToInt32(id))
{
h.FieldName = name;
h.Lenght = length;
h.PrimaryKey = pk;
h.ForeignKey = fk;
break;
}
}
this.grid.EditItemIndex = -1;
BindGrid();
}
private void addfields_Click(object sender, System.EventArgs e)
{
bool pTmp = false;
bool fTmp = false;
if(this.primarykey.Checked)
pTmp = true;
if(this.ForeignKey.Checked)
fTmp = true;
HoldInfoAtFields haf = new HoldInfoAtFields(counter++, this.fieldname.Text, this.lenght.Text, pTmp, fTmp);
arl.Add(haf);
BindGrid();
}
private void OpretTabel_Click(object sender, System.EventArgs e)
{
}
}
public class HoldInfoAtFields
{
private string _name = "";
private string _lenght = "";
private bool _p = false;
private bool _f = false;
private int _id = 0;
public HoldInfoAtFields(int id, string name, string lenght, bool p, bool f)
{
_id = id;
_name = name;
_lenght = lenght;
_p = p;
_f = f;
}
public string FieldName
{
get{return _name;}
set{_name = value;}
}
public string Lenght
{
get{return _lenght;}
set{_lenght = value;}
}
public bool PrimaryKey
{
get{return _p;}
set{_p = value;}
}
public bool ForeignKey
{
get{return _f;}
set{_f = value;}
}
public int ID
{
get{return _id;}
set{_id = value;}
}
}
}