2012-04-06 8 views
0

値が渡され取得されていないと私は、彼らが埋め込むことができるようにHTMLとして、それらのラベルをレンダリングしたいしかし、私は3つのラベル値はascxコードビハインドからjavascriptに渡されませんか?

string text1 = fr.data[0].name; 
     string text2 = m.data[0].name; 
     string text3 = m.data[0].name; 
     Page.ClientScript.RegisterClientScriptBlock(this.GetType(), " ", "document.getElementById('lblfriend').innerHTML ='" + text1 + "'; return true;", true); 
     Page.ClientScript.RegisterClientScriptBlock(this.GetType(), " ", "document.getElementById('lblmyname').innerHTML ='" + text2 + "'; return true;", true); 
     Page.ClientScript.RegisterClientScriptBlock(this.GetType(), " ", "document.getElementById('lblmyname1').innerHTML ='" + text3 + "'; return true;", true); 

を持つASCXユーザコントロールにASCXの分離コードから値を転送するためにこれを使用していますメールで

助けてください!

+0

あなたの問題であり、あなたはfr.dataによってデータを取得しているもの[0] .nameの、m.data [0] .nameの?または、Page.ClientScript.RegisterClientScriptBlockコードに問題がありますか? –

+0

1つの問題は、RegisterClientScriptBlock呼び出しがすべて同じキーを使用するため、最初のものだけが実際に登録されることです。 – zeal

答えて

1

を使用する必要があります。次に、usercontrolをレンダリングするときに値を渡すと、ラベルのテキストがレンダリングされます。

ユーザーコントロールのための分離コード:

public partial class WebUserControl1 : System.Web.UI.UserControl 
{ 
    private string _Friend; 

    public string Friend 
    { 
     get 
     { 
      return _Friend; 
     } 
     set 
     { 
      _Friend = value; 
      lblfriend.Text = value; 
     } 
    } 

    private string _MyName; 

    public string MyName 
    { 
     get 
     { 
      return _MyName; 
     } 
     set 
     { 
      _MyName = value; 
      lblmyname.Text = value; 
      lblmyname1.Text = value; 
     } 
    } 

} 

次に、あなたがあなたの親コントロール/ページでそのように自分の価値観を読み込むことができます:

 string text1 = fr.data[0].name; 
     string text2 = m.data[0].name;      
     MyUserControl.Friend = text1; 
     MyUserControl.MyName = text2; 
4

レンダリングされたページを見て、あなたのコントロールの名前がlblFriendであると確信していますか?そうではありません。

あなたは、ユーザーコントロールの分離コード内の文字列プロパティとしてラベルテキストを公開することができ

"document.getElementById('" + lblfriend.ClientID + "').innerHTML =' 
+0

はい名前は同じですが、私はaspxページでこのusercontrolにアクセスすると値を見ることができますが、HTMLに変換します。ラベルのテキストにアクセスできないので、表示されません 'StringBuilder htmlResponse = new StringBuilder(); (HtmlTextWriter textWriter = new HtmlTextWriter(sw)){Control emailBody = Page.LoadControl( "myEmailtemplate.ascx"); using(StringWriter sw = new StringWriter(htmlResponse)) { を使用しています。 emailBody.RenderControl(textWriter); emailHtml = htmlResponse.ToString(); セッション["emailHtml"] = emailHtml; }} ' – vini

+0

値は私のためにAsp.netラベル – vini

0

ライトコントロールのClientIDを 例えば持つ唯一のRegisterClientScript

String.Format(Page.ClientScript.RegisterClientScriptBlock(this.GetType(), " ", "document.getElementById('{0}').innerHTML ='" + text1 + "'; document.getElementById('{1}').innerHTML ='" + text2 + "';document.getElementById('{2}').innerHTML ='" + text3 + "'; return true;", true),lblfriend.ClientID,lblmyname.ClientID,lblmyname1.ClientID); 

それとも

String.Format(Page.ClientScript.RegisterClientScriptBlock(this.GetType(), " ", "{3}('{0}').{4} ='{5}'; {3}('{1}').{4}='{6}';{3}('{2}').{4}='{7}'; return true;", true),lblfriend.ClientID,lblmyname.ClientID,lblmyname1.ClientID,"document.getElementById","innerHTML",text1,text2,text3); 
+0

doesntの仕事 – vini

+0

構文エラーのために残念にテキストとして渡されたばかりアレント、私はそれをmodifedましたが、今でご確認ください。 –

関連する問題