2014-09-03 175 views
0
protected void page load() 
{ 
    blick=1; 
    j=0; 
} 

protected button1_click() 
{ 
    bclick=blick+1; 
    j=j+1; 
    ReferenceDetails[]rfobj=new ReferenceDetails[bclick]; 
    if(j<=bclick) 
    { 
     rfobj[j]=new ReferenceDetails(); 
     rfobj[j].name=txtrfname.text; 
     rfobj[j].lastname=txtrflastname.text; 
    } 
} 

protected preview button_click() 
{ 
    Response.write(rfobj[1].name); // HOW i should achieve this 
    Response.write(rfobj[2].name); 
    //object reference is not set to instance of an object 
} 

我想爲具有相同屬性但值不同的同一類創建新對象。在按鈕上,首先單擊一個對象,然後根據用戶輸入的內容使用某些屬性創建並綁定值。如何爲一個類創建具有相同屬性的多個對象,但每個對象的值不同

如果再次點擊該按鈕,則會再次創建一個新對象,該對象需要創建具有相同屬性但不同值的用戶此時輸入的值,並且這些值要與該對應對象綁定。

然後,我想要獲取每個新生成的對象及其關聯值在另一個按鈕單擊以顯示在GridView上。但是對象在上面的代碼中生成爲rfobj[1], rfobj[2],但是當我轉到下一個按鈕並訪問該值時,它們將爲空。

我該如何克服它?任何人都可以爲我解決這個問題嗎?

回答

3

的rfobj陣列正在創建每個按鈕上點擊新鮮,所以每次只中有

你需要將它移動到表格的最後一項 - 像「布利克」計數器。

+0

如果button1_點擊一次我想創建一個具有一些屬性和相關值的對象,用戶可以動態輸入這些值。我想要將這些動態值綁定到創建的對象上。然後,如果同一個按鈕1再次單擊,則會返回到我的用戶屏幕,這是第二次另一個新對象想要使用相同的屬性和新的值創建,直到該按鈕不會單擊爲止。然後在另一個預覽 - 點擊我想訪問所有的對象與他們的數據,它們是在按鈕1上單擊創建的。 – subbu 2014-09-03 17:26:12

+0

我知道你想要做什麼,我解釋了爲什麼你的代碼不工作。你需要在頁面加載函數中聲明rjobj而不是點擊功能 – pm100 2014-09-03 22:44:46

0

這是遠離良好的編程技術,也可以是你有內存泄漏......

但要解決你的問題,問題是:

當您單擊該按鈕第二次

,數組被重新創建,並帶有按鈕的數量,但只填充最後一個按鈕,之前的按鈕重新爲null,因爲它是新對象。

您必須重新創建備份之前您參考,然後與以前創建的對象填補了前一陣插槽...

是這樣的:

形式

ReferenceDetails[] rfobj; 
int bclick = 0; 

在按鈕:

int old_count = bclick; 

bclick=blick+1; 
//j=j+1; 

ReferenceDetails[] old_rfobj = rfobj; 
rfobj = new ReferenceDetails[bclick]; 

for (int i = 0; i < old_count; i++){ 

    rfobj[i] = old_rfobj[i]; 
} 

if (j<=bclick) { 
    //rfobj[j]=new ReferenceDetails(); you dont need this 
    rfobj[bclick-1].name=txtrfname.text; 
    rfobj[bclick-1].lastname=txtrflastname.text; 
} 

這個可以爲你工作,但你米唉嘗試理解在後臺發生了什麼,創建和釋放對象...的new字請求內存從系統...這內存必須anywhen發佈的時候......

問候

+0

我可以通過另一個按鈕單擊獲取對象數據以便向用戶顯示。 – subbu 2014-09-03 17:34:00

+0

你必須在表單中聲明ReferenceDetails [] rfobj,然後在重新創建它之後填充數組,就像我向你展示的那樣... – alijunior 2014-09-03 17:36:20

+0

看到我的更新...你也不需要J,而bclick可以保存期望的(當新的)數組長度 – alijunior 2014-09-03 17:48:27

相關問題