gridview user control עם כפתור Edit

nachumginat

New member
gridview user control עם כפתור Edit

שלום חברים
אני מנסה לייצר USER CONROL של גריד דינאמי שיכלול בתוכו כפתור EDIT. הבעיה שלי שכאשר הקונטרול מוצג בדף הכפתור מבצע רק פוסטבק ולא מגיע לאיוונט שנקבע לו.
זה הקוד:
Gridforedit.ascx.cs
public partial class UserControl_GridForEdit : System.Web.UI.UserControl
{
public event EventHandler ButtonEditClick;

protected void Page_Load(object sender, EventArgs e)
{
if(!IsPostBack)
{
Session["LastDt"] = Session["LastColums"] = null;
lblError.Visible = false;
alink.Visible = false;
}

}
protected void OnPaging(object sender, GridViewPageEventArgs e)
{
}

public void BindDataForEdit(DataTable dt, string GridName = "", object[] Columns = null)
{
if (dt != null && dt != (DataTable)Session["LastDt"])
Session["LastDt"] = dt;
if (Columns != (object[])Session["LastColums"])
Session["LastColums"] = Columns;

if (Session["LastDt"] == null)
return;
if (GridName == "")
GridName = "grd" + Guid.NewGuid().ToString().Replace("-", string.Empty).Substring(0, 8);

GridView gvGeneral = new GridView();
gvGeneral.ID = "GridName";
gvGeneral.CssClass = "table table-striped table-bordered table-hover";
gvGeneral.AutoGenerateColumns = false;
gvGeneral.EmptyDataText = "אין נתונים להצגה";
Columns = (object[])Session["LastColums"];
dt = (DataTable)Session["LastDt"];
try
{
if (Columns != null)
{
for (int i = 0; i < Columns.Length; i = i + 2)
{
{
BoundField boundfield = new BoundField();
boundfield.DataField = dt.Columns[Columns.ToString()].ToString(); //Columns.ToString() ;
if (dt.Columns[Columns.ToString()].DataType.Name.ToString() == "Double")
{ boundfield.DataFormatString = "{0:C}"; }
boundfield.HeaderText = Columns[i + 1].ToString();
gvGeneral.Columns.Add(boundfield);
}
}
TemplateField tfield = new TemplateField();
tfield.HeaderText = "Edit";
tfield.ItemTemplate = new CreateItemTemplate(ListItemType.Item);

gvGeneral.Columns.Add(tfield);
}
else
{
for (int i = 0; i < dt.Columns.Count; i++)
{
BoundField boundfield = new BoundField();
boundfield.DataField = dt.Columns.ColumnName.ToString();
if (dt.Columns[Columns.ToString()].DataType.Name.ToString() == "Double")
{ boundfield.DataFormatString = "{0:C}"; }
boundfield.HeaderText = dt.Columns.ColumnName.ToString();
gvGeneral.Columns.Add(boundfield);
}
}
gvGeneral.DataSource = dt;
gvGeneral.DataBind();
}
catch (Exception ex)
{
&n
 

nachumginat

New member
נראה שלא כל ההודעה שלי נקלטה, אז הנה שוב

שלום חברים
אני מנסה לייצר USER CONROL של גריד דינאמי שיכלול בתוכו כפתור EDIT. הבעיה שלי שכאשר הקונטרול מוצג בדף הכפתור מבצע רק פוסטבק ולא מגיע לאיוונט שנקבע לו.
זה הקוד:
Gridforedit.ascx.cs
public partial class UserControl_GridForEdit : System.Web.UI.UserControl
{
public event EventHandler ButtonEditClick;
protected void Page_Load(object sender, EventArgs e){ }
public void BindDataForEdit(DataTable dt, string GridName = "", object[] Columns = null)
{ GridView gvGeneral = new GridView();
gvGeneral.ID = "GridName";
for (int i = 0; i < Columns.Length; i = i + 2)
{
BoundField boundfield = new BoundField();
boundfield.DataField = dt.Columns[Columns.ToString()].ToString();
boundfield.HeaderText = Columns[i + 1].ToString();
gvGeneral.Columns.Add(boundfield);
}
TemplateField tfield = new TemplateField();
tfield.HeaderText = "Edit";
tfield.ItemTemplate = new CreateItemTemplate(ListItemType.Item);
gvGeneral.Columns.Add(tfield);}
gvGeneral.DataSource = dt;
gvGeneral.DataBind();}
}
public class CreateItemTemplate : ITemplate{
public event EventHandler ButtonEditClick;
private ListItemType myListItemType;
public CreateItemTemplate(){}
public CreateItemTemplate(ListItemType Item){myListItemType = Item;}
public void InstantiateIn(System.Web.UI.Control container){
LinkButton lb = new LinkButton();
lb.ID = "btmEdit";
lb.Text = "Edit";
lb.Click += new EventHandler(btnClick_Click);
container.Controls.Add(lb);
}
protected void btnClick_Click(object sender, EventArgs e){
if (sender != null) ButtonEditClick(sender, e);
}
}
}
TESTCONTROL.aspx
<%@ Register Src="~/UserControl/GridForEdit.ascx" TagName="u_ccE" TagPrefix="uccE" %>
<div><uccE:u_ccE ID="u_cc2" Title="cc" runat="server" /></div>
TESTCONTROL.aspx.cs
public partial class testcontrol : BasePage{
cDBAccess db = new cDBAccess();
protected void Page_Load(object sender, EventArgs e) {
u_cc2.ButtonEditClick += new EventHandler(ucc2_ButtonClick);
object[] par = { "@ContractId", 1003, "@type", 1 };
DataTable DT = db.GetDataTable("spListPayments", par, ref Error);
if (DT != null && DT.Rows.Count > 0) {

object[] Columns = { "PaymentDate", Resources.Resource.Date,
....};
u_cc2.BindDataForEdit(DT, "", Columns);}
}
}
public void ucc2_ButtonClick(object sender, EventArgs e)
{Response.Write("I did it");}
}
הגריד עולה עם הנתונים והכפתורים, אבל לחיצה על הכפתור EDIT לא מגיעה לאיוונט ucc2_ButtonClick
מה אני עושה לא נכון :)
ותודה לעוזרים
 
למעלה