我有兩個按鈕與點擊功能C#/ asp.net全局變量?
第一個單擊時獲取分配變量。
如何讓我的第二個按鈕來從第一按鈕的變量,當我點擊按鈕2?
這似乎並沒有工作。由於第二個按鈕不能識別變量。
感謝
編輯:
只是爲了澄清我的代碼生成的PDF文件。按鈕1選擇要使用的模板的網址。並在按鈕2(生成PDF的那個)我想要它從按鈕1獲得變量集,以便它知道要使用的模板。
編輯2: 我的代碼的工作,但只有當我不使用AJAX更新面板。看來,我試圖設置變量不會與AJAX
設置我有兩個按鈕與點擊功能C#/ asp.net全局變量?
第一個單擊時獲取分配變量。
如何讓我的第二個按鈕來從第一按鈕的變量,當我點擊按鈕2?
這似乎並沒有工作。由於第二個按鈕不能識別變量。
感謝
編輯:
只是爲了澄清我的代碼生成的PDF文件。按鈕1選擇要使用的模板的網址。並在按鈕2(生成PDF的那個)我想要它從按鈕1獲得變量集,以便它知道要使用的模板。
編輯2: 我的代碼的工作,但只有當我不使用AJAX更新面板。看來,我試圖設置變量不會與AJAX
設置您的按鈕具有Id
,你得到這個按鈕與他Id
諾塔:您可以依次添加RUNAT =「服務器」在服務器端可視化
<asp:Button id="Button1"
Text="Click "
OnClick="Btn1_Click"
runat="server"/>
<asp:Button id="Button2"
Text="Click "
OnClick="Btn2_Click"
runat="server"/>
void Btn2_Click(Object sender, EventArgs e)
{
Button1.Text = "test after click on button 2";
Template = ...;//Set your value
}
void Btn1_Click(Object sender, EventArgs e)
{
Button2.Text = "test after click on button 1";
//Here you can get your value after post.
var result = Template;
}
這不是主題,但在委託中,您也可以通過傳遞sender參數來獲取objet按鈕。
var button = sender as Button; //You get button who raise event
爲了管理Template Path
財產。
public string Template
{
get
{
if(ViewState["Template"] != null)
{
return (string)ViewState["Template"];
}
}
set{ViewState["Template"] = value;}
}
這是可行的,因爲'Button1.Text'和'Button2.Text'一個持久性機制 - 即'Button'控件使用ASP.NET ViewState的概念。這是你需要了解的堅持狀態。 – tomfanning
默認情況下,TomFanning和EnableViewState =「true」,謝謝你的額外評論 –
我關閉了視圖狀態!這可能是我的問題,因爲我在提問之前嘗試了這個問題。我會放棄這一點。 –
我猜你正在尋找訪問用於該值在Button1的Click事件中設置按鈕2的單擊事件中一個變量的值?
private string myPrivateString = "";
void Page_Load()//Not sure of correct method signature
{
if(Page.IsPostBack)
{
myPrivateString = Session["myPrivateString"];
}
}
void Button1_Click(object sender, EventArgs e)
{
//There will a postback before this gets executed
myPrivateString = "Value Set From Button 1";
Session["myPrivateString"] = myPrivateString;
}
void Button2_Click(object sender, EventArgs e)
{
//There will a postback before this gets executed
//Accessing myPrivateString here without setting value from session
//will return empty string as after PostBack its a new page thats rendered.
myPrivateString = Session["myPrivateString"]; // Or do it in the Page_Load event
}
我想現在你可以得到button2 click事件裏面的值。
另請閱讀ASP.NET頁面生命週期以及ASP.NET框架如何處理按鈕點擊等客戶端事件。
在這種情況下,你應該真正使用視圖狀態,而不是會話。 – Servy
@Servy他沒有要求控制屬性,他想要在兩個不同的事件中訪問一個全局變量的值? ViewState僅適用於Text等控件屬性。爲什麼downvote?看看這些標籤。 –
視圖狀態不僅僅用於控制屬性。控件屬性存儲在那裏,但其他一些東西也是如此,包括適當的用戶內容。這都是範圍問題。 ViewState的內容被限制在這個頁面,以及所有的回傳到這個頁面。它作爲隱藏的HTML字段與每個請求/響應來回傳遞。會話存儲在服務器的內存中,並且將遠遠超出此單頁生命週期的範圍。這很糟糕,這既是因爲浪費資源,也是因爲它意味着你永遠無法打開這個頁面兩次(無論如何都沒有錯誤)。 – Servy
你能和你已經嘗試什麼分享您的代碼? –
沒有什麼可以分享的,想象兩個帶有點擊功能的準系統按鈕。第一個被分配一個字符串。我想第二個按鈕,能夠 –
您需要了解「範圍」,以使用該字符串 - 這裏有一個鏈接:http://msdn.microsoft.com/en-us/library/ms973875.aspx –