2011-11-11 4 views
0

私はリピータをデータバインドしようとしていますが、運がまだまだありません。私がどこに間違っているのかを誰にでも見せてくれると思いますか?チュートリアル/例の後に、私は現時点で二つの機能を持っていますが、私はただ一つしか持っていないと考えていました。ありがとう!ストアドプロシージャからリピータをどのようにデータバインドするのですか?

HTML:

   <ItemTemplate> 
         <tr class="row"> 
          <td><asp:Label ID="TitleLabel" runat="server" Text=""></asp:Label></td> 
          <td><asp:Label ID="NameLabel" runat="server" Text=""></asp:Label></td> 
          <td><asp:Label ID="PhoneLabel" runat="server" Text=""></asp:Label></td> 
          <td><asp:Label ID="EmailLabel" runat="server" Text=""></asp:Label></td> 
         </tr> 
       </ItemTemplate> 

VB

Protected Sub BindData() 

    Dim oCommand As SqlCommand 
    Dim oReader As SqlDataReader 

    Try 
     oCommand = DataAccess.GetSQLCommand("People_Retrieve", CommandType.StoredProcedure, SourceServer.ConnectionLocal) 
     oCommand.Connection.ChangeDatabase("MyDatabase") 

     oCommand.CommandTimeout() = 9000 
     oReader = oCommand.ExecuteReader() 

     PeopleRepeater.DataSource = oReader 
     PeopleRepeater.DataBind() 

    Catch ex As Exception 
     ErrorHandler.HandleError(ex) 
    Finally 
     oReader.Close() 
     oReader = Nothing 
    End Try 

End Sub 

Protected Sub PeopleRepeater_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.RepeaterItemEventArgs) Handles PeopleRepeater.ItemDataBound 

    Dim NameLabel As Label = CType(e.Item.FindControl("LabelName"), Label) 
    NameLabel.Text = e.Item.DataItem("Name") 

    Dim TitleLabel As Label = CType(e.Item.FindControl("TitleName"), Label) 
    NameLabel.Text = e.Item.DataItem("Title") 

    Dim PhoneLabel As Label = CType(e.Item.FindControl("PhoneName"), Label) 
    NameLabel.Text = e.Item.DataItem("Phone") 

    Dim EmailLabel As Label = CType(e.Item.FindControl("EmailName"), Label) 
    NameLabel.Text = e.Item.DataItem("Email") 

End Sub 

答えて

1

SqlDataAdapterを使用します。

Using adap As New SqlDataAdapter(oCommand) 
    Dim table As New DataTable() 
    adap.Fill(table) 

    PeopleRepeater.DataSource = table 
    PeopleRepeater.DataBind() 
End Using 

あなたがいずれかの接続をオープンしている場所が必要になる場合がありますので、私は、表示されませんそれを追加する:

oCommand.Connection.Open() 
+0

VB.NET変換に取り組みます。 –

1

  1. は 'SelectPersonalDetails'

    CREATE PROCEDUREのSelectPersonalDetails

    という名前のストアドプロシージャを作成します。手順に従ってください - ここでは、ストアドプロシージャ

    @emailのパラメータを追加します。 SYSNAME

    AS 
    
    BEGIN 
    

    - SET NOCOUNT ONを追加すると、余分な結果セットが から除外され、SELECTステートメントに干渉します。

    SET NOCOUNT ON;

    - ここ手続きのための挿入文

    は がTRANSACTION

    SELECT名前、タイトル、電話番号、PersonalDetails

    メール= @email

    から電子メールをBEGIN BEGIN TRY BEGIN

    終了

    リピーターにデータをバインドするために、データセットを作成します

    がCATCH

    ROLLBACK TRANSACTION 
    DECLARE @ERR AS VARCHAR(500) 
    SELECT @ERR = ERROR_MESSAGE() 
    RAISERROR(@ERR,16,1) 
    
    RETURN 
    

    END CATCH ENDをBEGIN

  2. をTRY TRANSACTION

    ENDをCOMMIT。

    公共のDataSet Get_PersonaldetailbasedEmail() {

    try 
        { 
         DataSet oDS = new DataSet(); 
         SqlParameter[] oParam = new SqlParameter[1]; 
    
         oParam[0] = new SqlParameter("@Email", _sEmail); 
    
    
         oDS = SqlHelper.ExecuteDataset(DataConnectionString,   CommandType.StoredProcedure, "SelectPersonalDetails", oParam); 
         return oDS; 
        } 
        catch (Exception e) 
        { 
         ErrorMessage = e.Message; 
         return null; 
        } 
    } 
    

注:(I)SelectPersonalDetailsストアドプロシージャ名である

(ii) In order to select unique record from the table i have used emailid 

    (iii) I have assume the table name as PersonalDetails. 
  1. Personeldetailsのようなユーザーコントロールページに何かを作成します。 .ascx

    /LI> /LI> /LI> /LI>

注I上記リピーターのためのHTMLコードを持っているが、私は知りませんこのエディタで回避する方法。とにかくリピーターIDはリピーターと同じで、ラベルIDはラベルIDと同じです。

  1. データバインド

    にデータをバインドする公共ボイドFillArray(のArrayListの連想リスト) {ArrayListのアル=新規のArrayListを()関数を作成します。

    foreach (Object objRow in alist) 
        { 
         string sTitle = ((DataRow)objRow)["Title"].ToString(); 
         string sName = ((DataRow)objRow)["Name"].ToString(); 
         string sPhone = ((DataRow)objRow)["Phone"].ToString(); 
         string sMail = ((DataRow)objRow)["Mail"].ToString();   
    
         al.Add(new string[]{ sTitle,sName,sPhone,sMail}); 
    
    
        } 
        PeopleRepeater.DataSource = al; 
        PeopleRepeater.DataBind(); 
    
    
    } 
    
    (e.Item.ItemType ==は、ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItemの)場合今

    データバインドされたアイテムと呼ば

  2. {ストリング[] itemArray =( (string [])e.Item.DataItem);

     Label myTitle = (Lable)e.Item.FindControl("TitleLabel"); 
         Label myName = (Label)e.Item.FindControl("NameLabel"); 
         Label myPhone = (Label)e.Item.FindControl("PhoneLabel"); 
         Label myEmail = (Label)e.Item.FindControl("EmailLabel"); 
    
         myTitle.Text = itemArray[0]; 
         myName.Text = itemArray[1]; 
         myPhone.Text = itemArray[2]; 
         myEmail.Text = itemArray[3]; 
    
    
    
    
        } 
    

あなたは答えが役に立つ見つけた場合、あなたの答えは他に私に知らせて、それをマークしてください....

+0

これはあまりにもローカライズされていると思います。私はそれがOPが求めているものだけにカットしようとします。 –

+0

この質問はVB.NETでもタグ付けされています。 –

関連する問題