我已经创建了一个UserControl(在Plutonix的帮助下),但是从状态更改这些对象时我遇到了一些问题。
我使用以下代码动态创建它们:
While UserData.Read
Dim CPID As String
Dim CPUN As String
CPID = UserData("Username").ToString
CPUN = UserData("Voornaam").ToString & " " & UserData("Achternaam").ToString
Dim CP As New Contacts(CPID, CPUN)
CP.Name = CPID
CP.ContactName.Name = CPID
AddHandler CP.ContactName.Click, AddressOf Chatbox
If UserData("Status").ToString = "Online" Then
CP.Status = Contacts.ChatStatus.Online
If UserData("NieuwBericht").ToString = "Ja" Then
CP.MsgStatus = Contacts.ChatMsgStatus.Ja
ElseIf UserData("NieuwBericht").ToString = "Nee" Then
CP.MsgStatus = Contacts.ChatMsgStatus.Nee
Else
CP.MsgStatus = Contacts.ChatMsgStatus.Onbekend
End If
ElseIf UserData("Status").ToString = "Afwezig" Then
CP.Status = Contacts.ChatStatus.Afwezig
If UserData("NieuwBericht").ToString = "Ja" Then
CP.MsgStatus = Contacts.ChatMsgStatus.Ja
ElseIf UserData("NieuwBericht").ToString = "Nee" Then
CP.MsgStatus = Contacts.ChatMsgStatus.Nee
Else
CP.MsgStatus = Contacts.ChatMsgStatus.Onbekend
End If
ElseIf UserData("Status").ToString = "Offline" Then
CP.Status = Contacts.ChatStatus.Offline
If UserData("NieuwBericht").ToString = "Ja" Then
CP.MsgStatus = Contacts.ChatMsgStatus.Ja
ElseIf UserData("NieuwBericht").ToString = "Nee" Then
CP.MsgStatus = Contacts.ChatMsgStatus.Nee
Else
CP.MsgStatus = Contacts.ChatMsgStatus.Onbekend
End If
Else
CP.Status = Contacts.ChatStatus.Onbekend
If UserData("NieuwBericht").ToString = "Ja" Then
CP.MsgStatus = Contacts.ChatMsgStatus.Ja
ElseIf UserData("NieuwBericht").ToString = "Nee" Then
CP.MsgStatus = Contacts.ChatMsgStatus.Nee
Else
CP.MsgStatus = Contacts.ChatMsgStatus.Onbekend
End If
End If
CP.Dock = DockStyle.Top
ChatContactPanel.Controls.Add(CP)
End While
结果我得到了这个:
现在我的问题是: 如何更改每个用户的联系人对象的MsgStatus和状态
答案 0 :(得分:2)
假设您想找到" Patricia":
ChatUser
我在猜测"联系人"是用户控件名称," ChatContactPanel"是存储它们的容器控件。 EPPlus Large Dataset Issue with Out of Memory Exception对此信息进行了编辑。
ChatControl
类管理它而不是每次发生变化时都找到它们会更好。当然,您的应用会跟踪用户跟踪的其他运行时数据。 ChatUser
类中的myChatBox.Status = myStatus
属性会阻止您完全搜索它们并允许该类对其进行管理:
<?php
include('dbcategory.php');
?>
<script type="text/javascript">
var app = true;
function rFields1(elm){
if (app == false){
var tra = elm.parentNode.parentNode;
tra.remove();
}
app = true;
}
function addFields1(){
if(app == true){
var container = document.getElementById("container1");
var table = document.createElement("table");
table.border=1;
table.cellspacing=0;
table.id ="education";
table.name = "education[]";
container.appendChild(document.createTextNode(""));
var tr = document.createElement("tr");
var td1 = document.createElement("td");
td1.valign = "top";
var slct = document.createElement("select"); //? how do I fix this up
slct.id = "institution";
slct.name = "institution[]";
//some php code that is generating js code
<?php
$sql1a = "SELECT * FROM levels ORDER BY id asc";
$smt1a = $dbs->prepare($sql1a);
$smt1a -> execute();
while($row1a=$smt1a->fetch(PDO::FETCH_ASSOC))
{
echo("var opt=document.createElement(\"option\");\r\n");
echo("opt.value='$row1a[level]';\r\n");
echo("opt.text ='$row1a[level]';\r\n");
echo("slct.appendChild(opt);");
}
?>
slct.value='<?php echo $_GET['id2']; ?>'; //container.add(option);
container.appendChild(slct);//? how do I fix this up
// select1.appendChild(option);
td1.appendChild(slct);
tr.appendChild(td1);
container.appendChild(document.createElement("br"));
table.appendChild(tr);
container.appendChild(table);
app = false;
}
else {
colour.onclick=function(){
rFields1(this);};
// app = true;
}
}
</script>
<form id="myform" action="" align="center" method="post" enctype="multipart/form-data">
<div id="div2">
<table border="1" cellspacing="0" style="margin-top:12px width="900"">
<colgroup>
<col span="1">
</colgroup>
<input type="hidden" id="idz" name="idz">
<br><H2 align="center">EDUCATION</H2><br>
<div id="container1">
<table border="1" id="education" name="education[]" cellspacing="0" style="margin-top:12px width="900"">
<colgroup>
<col span="1">
</colgroup>
<input name="colour" id="colour" type="checkbox" onclick="addFields1()" />
<a href="#" type="hidden" id="Remove" name="Remove" onclick="rFields1(this)"></a>
</table>
</div>
</table>
</form>
<br>
该类还可以使用已设置的属性为您创建控件。
答案 1 :(得分:1)
我知道这不是你问题的答案 - 这只是一个有用的指针 - 如果你要我删除,请随时告诉我 - 如果我错过了某些事情,请道歉,如果我的代码中存在拼写错误,但您的If..End If
语句的大块包含大量重复代码。它可以像这样重写 -
Select Case Userdata("Status").ToString
Case "Online"
CP.Status = Contacts.ChatStatus.Online
Case "Afwezig"
CP.Status = Contacts.ChatStatus.Afwezig
Case "Offline"
CP.Status = Contacts.ChatStatus.Offline
else
CP.Status = Contacts.ChatStatus.OnBekend
End Select
If UserData("NieuwBericht").ToString = "Ja" Then
CP.MsgStatus = Contacts.ChatMsgStatus.Ja
ElseIf UserData("NieuwBericht").ToString = "Nee" Then
CP.MsgStatus = Contacts.ChatMsgStatus.Nee
Else
CP.MsgStatus = Contacts.ChatMsgStatus.Onbekend
End If
如果代码完全错误也会道歉,但我无法测试它。