2 user control m. databind Repeater og Datagrid forsvinder
Jeg har lavet to user control's hvor den ene indeholder et datagrid og den anden indeholder en repeater. I begge tilfælde har controllen et eller to tekstfelter hvor man kan tilføje noget til en database og derefter hente det ud igen.Begge controller virker fint hver for sig, men sammen forsvinder både Datagrid og Repeater så snart man trykker på en knap (Datagrid: edit/delete, Repeater: Delete(fra asp:Button))
Jeg har prøvet at sætte et breakpoint ind på datagrid'ets EDIT, men den bliver slet ikke kaldt, de to ting forsvinder bare.
Jeg vil gå ud fra det er noget med mine databinds, men ved ikke hvad. Ud over det ikke virker bør det også laves på en smartere måde, da jeg laver massere database åben/Luk, men først bare virke.
Jeg er sikker på der ikke er nogen med samme Id i de to controlls
Jeg har min ene controls cs fil:
public class LinkBlock : System.Web.UI.UserControl
{
protected System.Web.UI.WebControls.TextBox LinkBlockTextBox1;
protected System.Web.UI.WebControls.TextBox LinkBlockTextBox2;
protected System.Web.UI.WebControls.Button LinkBlockButton1;
protected System.Web.UI.WebControls.Label LinkBlockLabel1;
protected System.Web.UI.WebControls.Label LinkBlockLabel2;
protected System.Web.UI.WebControls.Label LinkBlokValidUrl;
protected System.Web.UI.WebControls.DataGrid LinkBlokHomepageGrid;
IS.DatabaseConnection.DBConn DB = new IS.DatabaseConnection.DBConn("Admin");
System.Collections.ArrayList AL = new System.Collections.ArrayList();
String _ArtistId="";
int rows=0;
public String Text1
{
set
{
LinkBlockLabel1.Text = value;
}
}
public String ArtistId
{
set
{
_ArtistId = value;
}
}
public String Text2
{
set
{
LinkBlockLabel2.Text = value;
}
}
#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.LinkBlockButton1.Click += new System.EventHandler(this.LinkBlockButton1_Click);
this.Load += new System.EventHandler(this.Page_Load);
}
#endregion
private String CleanUp(String s)
{
s=s.Replace("'","''");
s=s.Replace("<","<");
return s;
}
public String DoBreak(String s)
{
if(s.Length>0)
return s+"<br>";
return "";
}
private void LinkBlockButton1_Click(object sender, System.EventArgs e)
{
LinkBlokValidUrl.Visible=false;
if(LinkBlockTextBox2.Text.Trim().Length>0)
{
String URL = this.LinkBlockTextBox2.Text.ToLower();
if(URL.Length>3 && URL.Substring(0,3).Equals("www"))
URL="http://"+URL;
//Sorter posterne i databasen og sæt dem i orden:
String getPost = "Select Id,Priority from ArtistHomepages where ArtistId="+_ArtistId.ToString();
System.Collections.Hashtable HT = new System.Collections.Hashtable();
System.Collections.ArrayList ALId = new System.Collections.ArrayList();
DB.makeConn();
MySql.Data.MySqlClient.MySqlCommand CM = DB.getCommand(getPost);
MySql.Data.MySqlClient.MySqlDataReader DR = CM.ExecuteReader();
while(DR.Read())
{
ALId.Add(int.Parse(DR["Priority"].ToString()));
HT.Add(int.Parse(DR["Priority"].ToString()),int.Parse(DR["Id"].ToString()));
}
DR.Close();
DB.closeConn();
ALId.Sort();
String updPrio = "";
System.Collections.ArrayList AL = new System.Collections.ArrayList();
String Ins = "insert into ArtistHomepages (ArtistId,Text,URL,Priority) Values(?ArtistId,?Text,?URL,?Priority)";
String[] Parameter = new String[]{"?ArtistId","?Text","?URL","?Priority"};
AL.Clear();
AL.Add(_ArtistId);
AL.Add(CleanUp(LinkBlockTextBox1.Text));
AL.Add(URL);
AL.Add(1);
DB.makeConn();
if(DB.insertUpdate(Ins,Parameter,AL))
{
for(int i = 0;i<ALId.Count;i++)
{
updPrio = "Update ArtistHomepages SET Priority="+(i+2)+" where Id="+HT[int.Parse(ALId[i].ToString())];
DB.insertUpdate(updPrio);
}
}
else
{
//Response.Write(DB.getLastError());
}
DB.closeConn();
BindData();
}
else
{
LinkBlokValidUrl.Visible=true;
}
}
public void BindData()
{
DB.makeConn();
Response.Write("LINK ERROR: "+DB.getLastError()+"<hr>");
String Selector="Select Id, Text, URL, Priority from ArtistHomepages where ArtistId="+_ArtistId+" Order by Priority";
LinkBlokHomepageGrid.DataSource = DB.getDataset(Selector);
LinkBlokHomepageGrid.DataBind();
DB.closeConn();
}
public void sort(String upDown,DataGridCommandEventArgs e)
{
int uD = 1;
if (upDown.Equals("op"))
{
uD = -1;
}
int currentId = int.Parse(LinkBlokHomepageGrid.DataKeys[(int)e.Item.ItemIndex].ToString());
int nextId = int.Parse(LinkBlokHomepageGrid.DataKeys[(int)e.Item.ItemIndex+uD].ToString());
String Update = "UPDATE ArtistHomepages SET Priority=?Priority where Id=?Id";
String current = "Select Priority from ArtistHomepages where Id=" + currentId;
String next = "Select Priority from ArtistHomepages where Id=" + nextId;
String[] p = new String[]{"?Priority","?Id"};
//opdater værdier størrere end Priorityen
DB.makeConn();
int currentPriority = int.Parse(DB.getSingleValue(current));
int nextPriority = int.Parse(DB.getSingleValue(next));
AL.Clear();
AL.Add(currentPriority);
AL.Add(nextId);
DB.insertUpdate(Update, p, AL);
AL.Clear();
AL.Add(nextPriority);
AL.Add(currentId);
DB.insertUpdate(Update, p, AL);
DB.closeConn();
BindData();
}
public void LinkBlokHomepageGrid_OnItemDataBound(object sender, DataGridItemEventArgs e)
{
//Hides ID column (http://eksperten.dk/spm/534513)
e.Item.Cells[0].Text="<div class=\"LinkBlockSpacer\">"+rows.ToString()+".</div>";
rows++;
//Comfirm box:
if(e.Item.FindControl("Delete") != null)
{
((Button) e.Item.FindControl("Delete")).Attributes.Add("onClick", "return confirm('Delete this item');");
}
}
public void LinkBlokHomepageGrid_Edit(Object sender, DataGridCommandEventArgs e)
{
LinkBlokHomepageGrid.EditItemIndex = (int)e.Item.ItemIndex;
BindData();
}
public void LinkBlokHomepageGrid_Update(Object sender, DataGridCommandEventArgs e)
{
String TextValue = ((System.Web.UI.WebControls.TextBox)e.Item.FindControl("Edit1")).Text;
String URLValue = ((System.Web.UI.WebControls.TextBox)e.Item.FindControl("Edit2")).Text;
if(URLValue.Trim().Length!=0)
{
String Update = "UPDATE ArtistHomepages SET Text=?Text,URL=?URL where Id=?Id";
String[] p = new String[]{"?Text","?URL","?Id"};
AL.Clear();
AL.Add(TextValue);
AL.Add(URLValue);
AL.Add(LinkBlokHomepageGrid.DataKeys[(int)e.Item.ItemIndex]);
DB.makeConn();
DB.insertUpdate(Update,p,AL);
Response.Write(DB.getLastError());
DB.closeConn();
LinkBlokHomepageGrid.EditItemIndex = -1;
}
BindData();
}
public void LinkBlokHomepageGrid_Cancel(Object sender, DataGridCommandEventArgs e)
{
LinkBlokHomepageGrid.EditItemIndex = -1;
DB.makeConn();
DB.closeConn();
BindData();
}
public void LinkBlokHomepageGrid_Delete(Object sender, DataGridCommandEventArgs e)
{
String Delete = "Delete from ArtistHomepages where Id=?Id";
String[] par = new String[]{"?Id"};
AL.Clear();
AL.Add(LinkBlokHomepageGrid.DataKeys[(int)e.Item.ItemIndex]);
DB.makeConn();
DB.insertUpdate(Delete,par,AL);
//Response.Write(DB.getLastError());
DB.closeConn();
BindData();
}
public void Page_Load(object sender, System.EventArgs e)
{
if(!Page.IsPostBack)
{
BindData();
}
}
private string Truncate(string input, int characterLimit)
{
string output = input;
if (output.Length > characterLimit && characterLimit > 0)
{
output = output.Substring(0,characterLimit);
if (input.Substring(output.Length,1) != " ")
{
int LastSpace = output.LastIndexOf(" ");
// if we found a space then, cut back to that space
if (LastSpace != -1)
{
output = output.Substring(0,LastSpace);
}
}
output += "...";
}
return output;
}
public void LinkBlokHomepageGrid_Command(Object sender, DataGridCommandEventArgs e)
{
String choose=e.CommandName.ToString();
switch (choose)
{
case "op":
try
{
int tmp = int.Parse(LinkBlokHomepageGrid.DataKeys[(int)e.Item.ItemIndex - 1].ToString());
sort("op",e);
}
catch (ArgumentOutOfRangeException ex)
{
}
break;
case "ned":
try
{
int tmp = int.Parse(LinkBlokHomepageGrid.DataKeys[(int)e.Item.ItemIndex + 1].ToString());
sort("ned",e);
}
catch (ArgumentOutOfRangeException ex)
{
}
break;
default:
break;
}
}
}
Håber der er nogen der har en ide.
