从数据库读取字段到GridView里
在一个名为Status的列里
存放着1,2,3这3种状态
在页面绑定的时候放到HTML的下拉列表里.代码如下:
<ItemTemplate>
<select id='select<%# Eval("Status_ID") %>'>
<option value='1'>上线</option>
<option value='3'>未知</option>
<option value='2'>下线</option>
</select>
</ItemTemplate>
如果绑定的时候<%# Eval("Status") %>为3
那么"未知"就默认为选中状态
这样该如何实现?
在一个名为Status的列里
存放着1,2,3这3种状态
在页面绑定的时候放到HTML的下拉列表里.代码如下:
<ItemTemplate>
<select id='select<%# Eval("Status_ID") %>'>
<option value='1'>上线</option>
<option value='3'>未知</option>
<option value='2'>下线</option>
</select>
</ItemTemplate>
如果绑定的时候<%# Eval("Status") %>为3
那么"未知"就默认为选中状态
这样该如何实现?
解决方案 »
- 获取Gridview PagerTemplate中用户控件
- asp.net超链接问题
- 类似于威客网的任务表结构如何设计的好呢
- 求救:一个很见鬼的问题
- 请教一个url为中文的问题。
- 提问:能不能把绑定了数据的DataSet插入Sql数据库,还是需要DataGrid插入数据库,另外怎么计算出绑定这个DataSet上的记录条数,我已经绑定
- 请教达人,请问在GridView中如何添加Button按钮?
- asp.net mvc怎么访问web窗体.aspx?
- 能不能用vs2005来写asp.net1.1的代码?
- 如何让datagrid生成的html元素具有title(提示文本)属性?在线等
- 赶集网网页采集功能!
- 页面有多个提交按钮时怎么设置enter提交的按钮啊
SelectedValue属性可以设置默认选中状态
如果不是,那么,但itemtemplate里要进行一些变动,需要有地方记录当前的select的文本值<ItemTemplate>
<select id='select_<%#Eval("Status_ID")%>'>
<option value='1'> 上线 </option>
<option value='3'> 未知 </option>
<option value='2'> 下线 </option>
</select><input type="hidden" id="txt_<%#Eval("Status_ID")%>" value="<%#Eval("Status")%>" />
<!--我用了input,你也可以用div,span等等,用style=display:none将其隐含,并且将 status的文本写到它里面,js通过innerTEXT来取.无论用什么,注意的只是要命名匹配-->
</ItemTemplate>
可以使用js来实现
<script>
function test()
{
var selectS = document.getElementsByTagName("SELECT");
for(var i=0;i<=selectS.length;i++)//或者用foreach
{
var sid = selectS[i].id;
if(sid....//用正则匹配是否符合 select_数字这样的规则,如果是,说明是你的itemTemplate时的select否则, 是别处的)
{
selectS[i].value = document.getElementById(sid.replace('select','txt')).value; //将对应的文本框的值设置为select 的选中值.
}
}
}
</script>
<body onload="test()">也可以用笨办法:<select ....>
<option value="1" <%if(Eval("Status_ID")=="1")Response.write("selected")%>>xxx</option>
<option value="2" <%if(Eval("Status_ID")=="2")Response.write("selected")%>>yyy</option>
....随手敲的,可能手误
你是优秀的.准备尝试第2种写法.
第3中写法好像有点语法错误呵呵.先尝试一下!
一会给回复!
第2个办法目前可能不能用了.因为GridView是嵌在UpdatePanel里无刷新页面的.因此不会触发test()事件尝试最下面种方法也就是Response.Write提示异常:
Eval()、XPath() 和 Bind() 这类数据绑定方法只能在数据绑定控件的上下文中使用。
if (Eval("chkOnLine").ToString() == "1")
{
Response.Write("<option value='1' selected>上线</option>");
}
if (Eval("chkOnLine").ToString() == "2")
{
Response.Write("<option value='2' selected>未知</option>");
}
Response.Write("</select>");
%>也提示
Eval()、XPath() 和 Bind() 这类数据绑定方法只能在数据绑定控件的上下文中使用。
updaztepanel我没用过,这个可能你要修改它内部实现的js部分. 或者页面注册一段解本来执行 test方法.我想这个应该是可以实现的.装一下环境再尝试.谢谢你的关注
<ItemTemplate>
<select id="<%# Eval("ID") %>">
<option value="1" <%# writeSelected(Eval("ID"),1) %>>aa</option>
<option value="2" <%# writeSelected(Eval("ID"),2) %>>bb</option>
<option value="3" <%# writeSelected(Eval("ID"),3) %>>cc</option>
<option value="4" <%# writeSelected(Eval("ID"),4) %>>dd</option>
<option value="5" <%# writeSelected(Eval("ID"),5) %>>ee</option>
</select>
</ItemTemplate>
</asp:Repeater>
protected void Page_Load(object sender, EventArgs e)
{
bindMyData();
} private void bindMyData()
{
IList al = new ArrayList();
for (int i = 0; i < 5; i++)
{
myObj m = new myObj();
m.ID = i+1;
m.Txt = "item" + ((int)(i+1)).ToString();
al.Add(m);
}
rptList.DataSource = al;
rptList.DataBind();
}
public string writeSelected(object obj,int curValue)
{
int judgeValue = Convert.ToInt32(obj);
if (judgeValue == curValue)
{
return "selected";
}
else
{
return "";
}
}
}public class myObj
{
public myObj()
{ }
private int _id;
private string _txt;
public int ID
{
set { this._id = value; }
get { return this._id; }
} public string Txt
{
set { this._txt = value; }
get { return this._txt; }
}
}