如何干扰ASPxListBox的javascript和codebehind
当我单击更新按钮时,aspxlistbox由codebeahind填充。当我将公司代码打印到aspxtbox4时,公司名称的公司代码显示在第二个aspxtbox中。为此,我使用aspxtbox4的lostfocus事件 但是,aspxlistbox会重置所有数据。这对我来说是一个意想不到的问题。我该怎么应付呢 这是我的Asp代码如何干扰ASPxListBox的javascript和codebehind,javascript,c#,asp.net,devexpress,Javascript,C#,Asp.net,Devexpress,当我单击更新按钮时,aspxlistbox由codebeahind填充。当我将公司代码打印到aspxtbox4时,公司名称的公司代码显示在第二个aspxtbox中。为此,我使用aspxtbox4的lostfocus事件 但是,aspxlistbox会重置所有数据。这对我来说是一个意想不到的问题。我该怎么应付呢 这是我的Asp代码 这是下面的Javascript代码 function getFirmName(s, e) { devpopup.PerformCallbac
这是下面的Javascript代码
function getFirmName(s, e) {
devpopup.PerformCallback('firmtxt|' + s.GetText());
}
function addListClick(s, e) {
var firmcode = textbox_firmcode.GetText();
var firmname = textbox_firmname.GetText();
var st = 0;
for (var i = 0; i < ASPxListBox1.GetItemCount() ; i++) {
var item = ASPxListBox1.GetItem(i);
if (item.value.split(' ')[0] == firmcode) st = 1;
}
if (st == 0) {
ASPxListBox1.BeginUpdate();
ASPxListBox1.AddItem(firmcode + ' ' + firmname);
ASPxListBox1.EndUpdate();
listcount++;
}
return false;
}
函数getFirmName(s,e){
devopup.PerformCallback('firmtxt |'+s.GetText());
}
函数addListClick(s,e){
var firmcode=textbox\u firmcode.GetText();
var firmname=textbox_firmname.GetText();
var-st=0;
对于(var i=0;i受保护的void devopup\u WindowCallback(对象源,PopupWindowCallbackArgs e)
{
string[]data=e.Parameter.Split(“|”);
if(数据[0].Equals(“firmtxt”))
{
ASPxPageControl页面=(ASPxPageControl)((aspxpopopcontrol)源代码).FindControl(“ASPxPageControl1”);
ASPxRoundPanel rpanel=(ASPxRoundPanel)page.FindControl(“ASPxRoundPanel2”);
aspxtbox txtbox=(aspxtbox)rpanel.FindControl(“aspxtbox5”);
ASPxRoundPanel otherpanel=(ASPxRoundPanel)page.FindControl(“ASPxRoundPanel2”);
ASPxListBox firmlistbox=(ASPxListBox)otherpanel.FindControl(“ASPxListBox1”);
SFADatabase db=新的SFADatabase(服务器);
字符串[]frmname=db.getData(“SFA_FIRM”,新字符串[]{“frmname”}”,其中FRMCODE='“+data[1]+””);
如果(frmname.Length>0)
{
txtbox.Text=frmname[0];
焦点();
//txtbox.Enabled=false;
}
其他的
{
//txtbox.Enabled=true;
txtbox.Text=“”;
焦点();
}
}
}
public void putUpdateData(字符串参数,对象源)
{
//使用“更新”按钮将公司名称加载到列表框
columns=新字符串[]{“FRMCODE”,“FRMNAME”};
data=db.getData(SFADatabase.TABLE_FIRM,列,“其中UGRREF=“+group_id+”);
//firmlistbox.Items.Clear();
firmcodelist.Clear();
firmnamelist.Clear();
对于(int i=0;i
为了更清晰,我附上了一张gif
在我看来,LostFocus事件的回调是清除列表框的地方。devopup是CallBackPanel吗?devopup是aspxpoppc控件。你找到解决方案了吗?你能为弹出控件包含asp代码吗?我找到了一个临时解决方案。这完全没有道理。解决方案是,在LostFocusEvent中,我使用PerformCallBack函数将listbox中的数据引用到codebehind。顺便说一下,列表框会自行重置,我不知道为什么。然后,将我拥有的数据插入列表框。这种方法不起作用,但它解决了我的问题。
function getFirmName(s, e) {
devpopup.PerformCallback('firmtxt|' + s.GetText());
}
function addListClick(s, e) {
var firmcode = textbox_firmcode.GetText();
var firmname = textbox_firmname.GetText();
var st = 0;
for (var i = 0; i < ASPxListBox1.GetItemCount() ; i++) {
var item = ASPxListBox1.GetItem(i);
if (item.value.split(' ')[0] == firmcode) st = 1;
}
if (st == 0) {
ASPxListBox1.BeginUpdate();
ASPxListBox1.AddItem(firmcode + ' ' + firmname);
ASPxListBox1.EndUpdate();
listcount++;
}
return false;
}
protected void devpopup_WindowCallback(object source, PopupWindowCallbackArgs e)
{
string[] data = e.Parameter.Split('|');
if(data[0].Equals("firmtxt"))
{
ASPxPageControl page = (ASPxPageControl)((ASPxPopupControl)source).FindControl("ASPxPageControl1");
ASPxRoundPanel rpanel = (ASPxRoundPanel)page.FindControl("ASPxRoundPanel2");
ASPxTextBox txtbox = (ASPxTextBox)rpanel.FindControl("ASPxTextBox5");
ASPxRoundPanel otherpanel = (ASPxRoundPanel)page.FindControl("ASPxRoundPanel2");
ASPxListBox firmlistbox = (ASPxListBox)otherpanel.FindControl("ASPxListBox1");
SFADatabase db = new SFADatabase(Server);
string[] frmname = db.getData("SFA_FIRM", new string[] { "FRMNAME" }, "WHERE FRMCODE='" + data[1] + "'");
if (frmname.Length > 0)
{
txtbox.Text = frmname[0];
txtbox.Focus();
//txtbox.Enabled = false;
}
else
{
//txtbox.Enabled = true;
txtbox.Text = "";
txtbox.Focus();
}
}
}
public void putUpdateData(string parameter, object source)
{
// Load the firm name to the listbox with update button
columns = new string[] { "FRMCODE", "FRMNAME" };
data = db.getData(SFADatabase.TABLE_FIRM, columns, "WHERE UGRREF=" + group_id + "");
// firmlistbox.Items.Clear();
firmcodelist.Clear();
firmnamelist.Clear();
for (int i = 0; i < SFADatabase.row_count; i++)
{
ListEditItem item = new ListEditItem(data[i * 2] + " " + data[i * 2 + 1], data[i * 2]);
firmlistbox.Items.Insert(i, item);
firmcodelist.Add(data[i * 2]);
firmnamelist.Add(data[i * 2 + 1]);
}
}