各位大虾,救救我!有关下拉列表框的问题(100分)

  • 主题发起人 主题发起人 netpacific
  • 开始时间 开始时间
N

netpacific

Unregistered / Unconfirmed
GUEST, unregistred user!
有两个下拉列表框A,B,内容都是从数据库中选出来的,但B中的内容要随着A的选择改变而改变,不知哪位大虾,可以帮助下弟
 
在A的OnChange事件中写,如下:
//ComboBox1 is A, ComboBox2 is B [:)]
procedure TForm1.ComboBox1Change(Sender: TObject);
//A
var i:integer;
begin
ComboBox2.Items.Clear;
DMForm.adoquery.CommandText:=' select ......................';
try //受保护语句
DMForm.adoquery.Open;
except
Application.MessageBox('系统出现查询错误!','错误',MB_OK+MB_ICONERROR);
exit;
end;

if DMForm.adoquery.IsEmpty then
begin
Application.MessageBox('没有任何查询结果!','警告',MB_OK+MB_ICONwarning);
exit;
end;
for i:=1 to DMForm.adoquery.RecordCountdo
begin
ComboBox2.Items.Add(DMForm.adoquery.['your_field']);
//B
DMForm.adoquery.Next;
end;
ComboBox2.SetFocus;
//B
end.
 
当A中的数据内容发生变化时
select * from xxx where xxxx
然后将选取出的数据重新添加到B中就ok了
 
使用TDBLookupComboBox或TDBLookupListBox空件并设置相应的ListSource,ListField,
KeyField等属性即可实现你的要求。
 
各位大哥,应该是我没有说清楚,让jrs兄浪费不少时间,我讲的是www页面上的下拉列表框
就像问题列表中问题类型那样的列表框。不知大家有没有明白我的问题。
 
用JavaScript慢慢写
 
请察看Select Object的帮助。(在MSDN library里面查找'selectObject')
他应该有一个OnSelectChange方法。
 
在ComboBox1的OnChange事件中
ComboBox2.ItemIndex:=ComboBox1.ItemIndex;
就可以了
 
在A的OnChange事件中写,如下:
//ComboBox1 is A, ComboBox2 is B [:)]
procedure TForm1.ComboBox1Change(Sender: TObject);
//A
begin
with ADOQuerydo
begin
Close;
SQL.Text:='select distinct spbm from T_kcsp where lbbm =' + '''' + IntToStr(ComboBox1.ItemIndex) + '''' + ' order by spbm';
Open;
ComboBox2.Items.Clear;
while not Eofdo
begin
ComboBox2.Items.Add(FieldByName('spbm').AsString);
Next;
end;
end;
end;

{ComboBox1.ItemIndex 的值对应combobox1.items属性中列表的各行}
临时简单的做了一个例子,希望对你有帮助。
 
有个JAVASCRIPT小例子
nclick事件
<select name="attribute" onclick="attribute_click()">
<option value="0" selected>国内</option>
<option value="1">国外</option>
</select>
<script language="JavaScript">
function attribute_click(){
var selectobj=window.document.form.attribute;
selectobj.options.length=1;//可确定OPTION有几个选项
selectobj.options[0]=new Option("中国","010086");//加项的内容
selectobj.options[0]=NULL;//清除内容
}
 
比较骡的办法......
如果B的数据不多(少于1000),可以考虑这样做,
有三个框为CA,CB,CB2。
其中CA,CB2分别存有表A,B的数据,在框CA的onChange事件中,
先清空框CB,然后对框CB2遍历,选出符合要求的元素,并加入到框CB中。
 
dfan2000
的好
 
同意dfan2000的
他可是高手。
 
拜托各位看看清楚,问题是发在JSP/servlet版的,不是delphi版。
这里的selectbox是HTML里的select tag.
所以snjat是对的。
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
900
SUNSTONE的Delphi笔记
S
D
回复
0
查看
867
DelphiTeacher的专栏
D
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
836
DelphiTeacher的专栏
D
后退
顶部