PDA

View Full Version : غیر فعال شدن LinkButton



razaghi
یک شنبه 19 اسفند 1386, 13:50 عصر
من یک GridView در صفحه دارم که تمام رکوردهای آن لود شده و در هر رکورد یک LinkButton داریم. در Page_Load گرید لود می شود و LinkButton کار می کند .(به صورت لینک است.)با استفاده از ICallbackEventHandler که گرید لود می شود LinkButtonدیگه کار نمی کند. (لینک نیست) ممنون می شم راهنمایی کنید.

miladr
یک شنبه 19 اسفند 1386, 16:57 عصر
شما باید کد بزاری اینطوری نمی شه نظری داد

razaghi
دوشنبه 20 اسفند 1386, 09:13 صبح
GridView به صورت دینامیک می سازم. با استفاده از کد زیر
ocGridView.CreateGridView("UserListGV", 97, "DGHead", "DGBody", "DGAlternating", ArrHeader, octable);
ArrHeader آرایه ای شامل عنوان هدر GridView است. و OCTable یک Datatable است که باید به GridView ، Bind شود.
CreateGridView به این صورت است:
ocGridView = new System.Web.UI.WebControls.GridView();
ocGridView.ID = GridID;
ocGridView.EnableSortingAndPagingCallbacks = true;

for (int i = 0; i < ArrayHeader.Length ; i++)
{
ocTempField = new TemplateField();
ocTempField.HeaderText = ArrayHeader[i][0];
ocTempField.SortExpression = ArrayHeader[i][2];
ocTempField.ItemTemplate = new GridViewTemplate(DataControlRowType.DataRow, ArrayHeader[i][2], ArrayHeader[i][2], ArrayHeader[i][4]);
ocGridView.Columns.Add(ocTempField);
}


در اولین بار که GridView ساخته می شود. مشکلی ندارد و LinkButton کار می کند. ولی برای نمایش Page های بعدی Grid از ICallbackEventHandler استفاده کرده ام. وقتی Grid لود می شود LinkButton به صورت لینک نیست. کد مربوطه به صورت زیر است :
protected void Page_Load(object sender, EventArgs e)
{
string CR_REF = ClientScript.GetCallbackEventReference(this, "myValue", "ReceiveDataFromServer", "validateF");

if (!ClientScript.IsClientScriptBlockRegistered("DoServerAction"))
{
string SERVER_SCRIPT = @" function DoServerAction(myValue,validateF) { " + CR_REF + "}";
ClientScript.RegisterClientScriptBlock(this.GetTyp e(), "DoServerAction", SERVER_SCRIPT, true);
}
}
برای page بعدی GetCallbackResult صدازده می شود. Grid دوباره با داده page بعد لود می شود.
public string GetCallbackResult()
{
string strData = strReturn;
string tmp = String.Empty;
tmp = BuildGridView(Convert.ToInt32(strReturn)).ToString ();
return tmp;
}

razaghi
یک شنبه 26 اسفند 1386, 10:10 صبح
به صورت ساده تر مشکل بگم. اگر ما یک LinkButton و یک Button در صفحه داشته باشیم. در ابتدا در PageLod ، LinkButton ساخته می شود و در صفحه نمایش داده می شود. به صورت زیر :
LinkButton ocLink = new LinkButton();
ocLink.Text = "ddd";
divScroll.Controls.Add(ocLink);
و هیچ مشکلی نیست.
اگر بخواهم با زدن Button دوباره LinkButton با text جدید ساخته شود و نمایش داده شود . از code زیر استفاده می کنم:
protected void Page_Load(object sender, EventArgs e)
{
string CR_REF = ClientScript.GetCallbackEventReference(this, "myValue", "ReceiveDataFromServer", "validateF");
if (!ClientScript.IsClientScriptBlockRegistered("DoServerAction"))
{
string SERVER_SCRIPT = @" function DoServerAction(myValue,validateF) { " + CR_REF + "}";
ClientScript.RegisterClientScriptBlock(this.GetTyp e(), "DoServerAction", SERVER_SCRIPT, true);
}
BuildLinkBtn();
}
protected string strReturn;

public void RaiseCallbackEvent(string eventArgument)
{
if (!String.IsNullOrEmpty(eventArgument))
strReturn = eventArgument;


}

public string GetCallbackResult()
{
string strData = strReturn;
string tmp = String.Empty;

tmp = BuildGridView(Convert.ToInt32(strReturn)).ToString ();

return tmp;
}
private string BuildGridView(int toRow)
{
LinkButton ocLink = new LinkButton();
ocLink.Text = "ssss";

StringWriter Sw = new StringWriter();
HtmlTextWriter Htw = new HtmlTextWriter(Sw);
ocLink.RenderControl(Htw);
return Htw.InnerWriter.ToString();
}

تابع جاوااسکریپت آن به صورت زیر است :
function ReceiveDataFromServer(strData)
{
var scrdiv='<%=divScroll.ClientID%>';

document.getElementById(scrdiv).setAttribute("innerHTML",strData );
}
مشکل این COde این است وقتی LinkButton به صفحه Add می شود دیگر Link ندارد. ممنون می شم راهنمایی کنید.

el_abdollahi
یک شنبه 26 اسفند 1386, 13:44 عصر
پس # توی ابزارهای ادیتور به چه درد میخوره ؟

razaghi
یک شنبه 26 اسفند 1386, 14:07 عصر
این فایل مربوطه است که نمونه کد است.
اگر این برنامه را اجرا کنید می بینید که در ابتدا که LinkButton ساخته می شود linkbutton فعال(قابل لینک) است ولی بعد از زدن button لینک ساخته می شود ولی لینک نیست.

mahani
چهارشنبه 29 اسفند 1386, 19:14 عصر
enable رو false کن