-- aspx --
: 컬럼에 템플릿 컬럼으로 아래와 같이 추가
<Columns>
<asp:BoundColumn DataField="LOCDESCRIPTION" HeaderText="설치위치">
<ItemStyle Width="69px"></ItemStyle>
</asp:BoundColumn>
...
<ASP:TEMPLATECOLUMN HeaderText="종속교환기">
<ItemTemplate>
<asp:DropDownList Runat="server" ID="ddlSubEquipList" DataSource='<%#GetSubEquipList()%>' DataTextField="NEALIAS" DataValueField="NESCODE" SelectedIndex='<%#GetSubEquipIndex(DataBinder.Eval(Container.DataItem, "SUBTENESCODE", "{0:c}"))%>'>
</asp:DropDownList>
</ItemTemplate>
</ASP:TEMPLATECOLUMN>
</Columns>
-- cs --
: 멤버변수 선언
protected DataView DVSubEquipList; // DOTS현황의 종속교환기리스트(드랍다운리스트에 바인딩)
protected ArrayList arrTSEPortInfo;
: 드랍다운리스트에 바인딩될 데이터 호출
SetSubEquipList(hidOfficeSCode.Value);
private void SetSubEquipList(string strOfficeSCode)
{
DataSet queryDS = null;
try
{
using(KT.NeOSS.FMB.SwitchMgr.BSL.SwitchEquipMgr.PSNTEquip
psntEquip = new KT.NeOSS.FMB.SwitchMgr.BSL.SwitchEquipMgr.PSNTEquip())
{
queryDS
= psntEquip.GetPSTNEquipList_For_NODE("4.5", "'EN'", "000000",
"000000", strOfficeSCode, "10", "40", "000000", "1006", "", "", "",
"0", "10", "10");
DVSubEquipList = new DataView(queryDS.Tables[0]);
}
DataRowView drv = DVSubEquipList.AddNew();
// Change values in the DataRow.
drv["NEALIAS"] = " 선택하세요";//소트시 맨위에 갈 수 있게 앞에 스페이스 추가
drv.EndEdit();
DVSubEquipList.Sort = "NEALIAS ASC";//소팅
}
catch(Exception ex)
{
base.errorMessage = ex.Message;
}
finally
{
if(queryDS != null)
queryDS.Dispose();
}
}
: 화면에 뿌려질때 호출되는 함수
protected DataView GetSubEquipList()
{
return DVSubEquipList;
}
protected int GetSubEquipIndex(string strValue)
{
for(int i=0; i < DVSubEquipList.Count; i++)
{
if((DVSubEquipList[i]["NESCODE"] != null) && DVSubEquipList[i]["NESCODE"].ToString() == strValue)
{
return i;
}
}
return 0;
}
: 화면에서 변경된 데이터를 가져와 UPDATE함수에 넘겨주기 위해 호출할 함수
GetPsdResult_Update();
private void GetPsdResult_Update()
{
arrTSEPortInfo = new ArrayList(psdResult.Items.Count);
for(int i = 0;i< psdResult.Items.Count;i++)
{
DataGridItem item = psdResult.Items[i];
string
[] astrTSEPortInfo = new string[] {item.Cells[7].Text,
item.Cells[8].Text,
((DropDownList)item.Cells[6].FindControl("ddlSubEquipList")).SelectedValue};
arrTSEPortInfo.Add(astrTSEPortInfo);
}
}
[출처] datagrid에 dropdownlist사용하기|작성자 모모