0

2 つのユーザー コントロールを表示するフレンド リスト ページがあります。
この最初のコントロールには現在のすべての友達が表示され、もう 1 つのコントロールには現在の友達リクエストが表示されます。

ユーザー コントロールは次の順序でロードされます。

・現在の友達・友達
リクエスト

それぞれほぼ同じ方法で DB を検索し、 の同じ構造を使用し、List<>非常によく似た にバインドしRepeatersます。

私が得ている現在の問題はこれです:

ExecuteReader requires an open and available Connection. The connection's current state is closed.

それでも、私はすべてのリーダーの前に接続を開き、使用後に閉じています。類似性のため; UserControlのコードの1 つを投稿します。リクエストに応じてさらに投稿します。

protected void Page_Load(object sender, EventArgs e)
    {
        GetFriend();
    }

    /// <summary>
    /// Get the current friends
    /// </summary>
    private void GetFriend()
    {
        try
        {
            List<FriendRequests> friendRequest = new List<FriendRequests>();

            // Get friend added by another
            const string strSql = "SELECT [id], [origionalId], [dateFriendAdded] FROM vwMemberFriendStatus WHERE contactId=@member AND accepted=1";

            SqlCommand sqlComm = new SqlCommand(strSql, DataConn.Connect()) { CommandType = CommandType.Text };

            sqlComm.Parameters.Add(new SqlParameter("@member", SqlDbType.Int)).Value =
                SiteSession.Current.NicknameId;

            SqlDataReader rdr = sqlComm.ExecuteReader();


            while (rdr.Read())
            {
                friendRequest.Add(new FriendRequests
                {
                    IsOrigional = false,
                    FriendId = rdr["id"].ToString(),
                    FriendName = Member.GetMemberName(rdr["origionalId"].ToString()),
                    DateAdded = DateTime.Parse(rdr["dateFriendAdded"].ToString()).ToString("dd MMMM yy")
                });
            }

            rptFriend.DataSource = friendRequest;
            rptFriend.DataBind();

            rdr.Close();
            DataConn.Disconnect();
            Response.Write("Current - Other <br/>");
        }
        catch (Exception f)
        {
            Response.Write("Current / Other: " + f.Message + "<br/>");
        }

        try
        {
            List<FriendRequests> friendRequest = new List<FriendRequests>();

            // Get friend added by self
            const string strSql =
                        "SELECT [id], [contactId], [dateFriendAdded] FROM vwMemberFriendStatus WHERE origionalId=@member AND accepted=1";

            SqlCommand sqlComm = new SqlCommand(strSql, DataConn.Connect()) { CommandType = CommandType.Text };

            sqlComm.Parameters.Add(new SqlParameter("@member", SqlDbType.Int)).Value =
                SiteSession.Current.NicknameId;

            SqlDataReader rdr = sqlComm.ExecuteReader();

            while (rdr.Read())
            {
                friendRequest.Add(new FriendRequests
                {
                    IsOrigional = true,
                    FriendId = rdr["id"].ToString(),
                    FriendName = Member.GetMemberName(rdr["contactId"].ToString()),
                    DateAdded = DateTime.Parse(rdr["dateFriendAdded"].ToString()).ToString("dd MMMM yy")
                });
            }

            rptFriend.DataSource = friendRequest;
            rptFriend.DataBind();

            rdr.Close();
            DataConn.Disconnect();
            Response.Write("Current - Self <br/>");
        }
        catch (Exception f)
        {
            Response.Write("Current / Self: " + f.Message + "<br/>");
        }
    }
4

0 に答える 0