PDA

View Full Version : سوال: سوال در مورد چت دو نفره



mahsa.n
چهارشنبه 05 بهمن 1390, 10:57 صبح
سلام به همه دوستان

من در سایتم یک صفحه برای چت توسط این سایت http://www.codeproject.com/Articles/17813/Multi-User-Chat-Room-Using-ASP-NET-2-0-and-AJAX درست کردم

حالا میخوام براش چت خصوصی درست کنم یعنی چت دو نفره ولی نمیدونم چی کار کنم

لطفا راهنمایی کنید

mahsa.n
جمعه 07 بهمن 1390, 19:10 عصر
کسی نظری نداره؟

من برای لیست باکس افراد حاضر در اتاق رویداد دابل کلیک در کد بیهاند گذاشتم که وقتی روی نام فردی دو بار کلیک میشه یه صفحه جدید باز بشه ولی مشکل اینجاست که چون صفحه چت اصلی بعد از دابل کلیک دوباره لود میشه همه چی به هم میخوره و کسی که دوبار کلیک کرده از لیست اعضا میفته بیرون



protected void Page_Load(object sender, EventArgs e)
{
txtMsg.Attributes.Add("onkeypress", "return clickButton(event,'btn')");

if (Request.Params["lstMembersHidden"] != null && (string)Request.Params["lstMembersHidden"] == "doubleclicked")//This means It was double click
{
//Response.Write("Double Click was fired selected item is " + lstMembers.SelectedItem.Text);
MembershipUser myObject = Membership.GetUser(lstMembers.SelectedItem.Text);
string UserID = myObject.ProviderUserKey.ToString();

//Response.Write("<script language='javascript'> window.open('privatechat.aspx?rid= " + UserID + "', 'window','HEIGHT=600,WIDTH=820,top=50,left=50,tool bar=yes,scrollbars=yes,resizable=yes');</script>");
//ClientScript.RegisterStartupScript(this.Page.GetTy pe(), "", "window.open('privatechat.aspx?rid=' " + UserID + " ,'Graph','height=400,width=500');", true);
string url = "privatechat.aspx?rid=" + UserID;
ScriptManager.RegisterStartupScript(Page, Page.GetType(), "popup", "window.open('" + url + "','_blank')", true);

}

if (!IsPostBack)
{
hfSelectedValue.Value = "";//for member list
hdnRoomID.Value = Request.QueryString["rid"];
ASPNETChat.ChatRoom room = ChatEngine.GetRoom(hdnRoomID.Value);// ChatRoom room = ChatEngine.GetRoom(hfRoomID.Value);
string prevMsgs = room.JoinRoom(Membership.GetUser().UserName, Membership.GetUser().UserName);
Panel p = new Panel();
p.ID = "childPanel";
p.ClientIDMode = System.Web.UI.ClientIDMode.Static;
p.Controls.Add(new LiteralControl("<div style=\"height:350px;background-color:White;overflow:scroll;\" id=\"txt\" runat=\"server\">" + prevMsgs + "</div>"));
declaredPanel.Controls.Add(p);
//txtm.Text = prevMsgs;
foreach (string s in room.GetRoomUsersNames())
{
lstMembers.Items.Add(new ListItem(s, s));
}
}
}






<script language="javascript">
function lstMembers_DoubleClick() {
/* we will change value of this hidden field so that in page load event we can identify event.*/
document.forms[0].lstMembersHidden.value = "doubleclicked";
document.forms[0].submit();
}
</script>

<asp:ListBox ID="lstMembers" runat="server" Width="140px" Height="356px" ondblclick="lstMembers_DoubleClick()"></asp:ListBox>
<input type="hidden" name="lstMembersHidden" />

hjran abdpor
جمعه 07 بهمن 1390, 21:15 عصر
سلام.
صفحه ی اصلیت را با اجاکس لود کنه و صفحه ی جدید را با هر روشی که دوست دارید مثل iframe با ... لود کنید و هنگام دابل کلیک کردن روی یکی از افراد مقدار ان را درون یک سشن یا ... برید بعد تو صفحه لود کنید !!!!!!
اگه نفهمیدید بگو تا بیشتر توضیح بدم.

mahsa.n
جمعه 07 بهمن 1390, 23:14 عصر
به نظر شما بهتر نیست تمام کدهایی که برای صفحه اصلی هست برای صفحه چت دو نفره هم بذارم و رویداد دابل کلیک رو با jquery بنویسیم؟

mahsa.n
جمعه 07 بهمن 1390, 23:59 عصر
از اونجایی که آی دی اتاقهای گفتگو یکتاست برای باز کردن یه پنجره جدید (چت دو نفره ) باید آی دی اون پنجره یکتا باشه ،من rid رو برابر UserId کاربر انتخاب شده از لیست گذاشتم



<script type="text/javascript">
$(document).ready(function () {
$("#<%= lstMembers.ClientID %>").click(function () {
var UserName = $("#<%= lstMembers.ClientID %>").val();
$.ajax
({
type: "POST",
url: "chatroom.aspx/GetUserId",

data: "{'username': '" + UserName + "'}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (message) {
var use rid = message.d;
var url = "privatechat.aspx?rid=" + userid;
window.open(url);
}
});
});
});
</script>



در این کد اگر روی نام کاربری از لیست کلیک بشه یک پنجره جدید باز میشه ، این پنجره فقط برای کسی که کلیک کرده باز میشه ، چی کار کنم که برای طرف مقابل هم باز بشه؟

mahsa.n
شنبه 08 بهمن 1390, 16:29 عصر
کسی نظری نداره؟