FineUI 官方论坛

标题: Grid的模板控件问题 [打印本页]

作者: 快乐的猪    时间: 2012-4-17 15:06
标题: Grid的模板控件问题
我用的是ExtAspNet版本:3.1.1.0,浏览器类型和版本:IE 9

问题描述:在ext:TemplateField中嵌套微软自带的DropDownList控件,但是却无法获取DropDownList控件的值

下面是前台代码
<ext:Grid ID="Grid1" AnchorValue="100% 88%" ShowBorder="true" ShowHeader="false"
                EnableBackgroundColor="true" EnableRowNumber="true" AllowSorting="true"
                EnableCheckBoxSelect="true" AutoPostBack="true" AutoScroll="true" runat="server"
                DataKeyNames="usergh,workid,begrq,username">
<Columns>
                    <ext:BoundField Width="70px" DataField="flag" HeaderText="状态" />
                    <ext:BoundField Width="50px" DataField="username" HeaderText="姓名" />
                    <ext:BoundField Width="100px" DataField="dept" HeaderText="部门" ExpandUnusedSpace="True" />
                    <ext:BoundField Width="165px" DataField="workrq" HeaderText="日期" />
                    <ext:TemplateField HeaderText="评分">
                        <ItemTemplate>
                            <aspropDownList ID="ddlJLScore" runat="server">
                                <aspistItem Value="100" />
                                <aspistItem Value="95" />
                                <aspistItem Value="90" />
                                <aspistItem Value="85" />
                                <aspistItem Value="80" />
                                <aspistItem Value="75" />
                                <aspistItem Value="70" />
                                <aspistItem Value="65" />
                                <aspistItem Value="60" />
                                <aspistItem Value="55" />
                                <asp:ListItem Value="50" />
                            </aspropDownList>
                        </ItemTemplate>
                    </ext:TemplateField></Columns>
            </ext:Grid>
后台取值代码:
                System.Web.UI.WebControls.DropDownList ddlScore = ((GridRow)Grid1.Rows[selRow]).FindControl("ddlJLScore") as System.Web.UI.WebControls.DropDownList;
但是运行之后ddlScore为null,请问这种情况我应该如何获取ddlScore的选定值呢



作者: Landroid    时间: 2012-4-17 17:37
sanshi说会在以后处理这种情况,给出示例。

有网友在http://bbs.extasp.net/forum.php? ... &extra=page%3D1
提出用
Request.Form[]
方式,至于是否可行,我没有测试,给你提供个参考
作者: 快乐的猪    时间: 2012-4-19 11:15
Landroid 发表于 2012-4-17 17:37
sanshi说会在以后处理这种情况,给出示例。

有网友在http://bbs.extasp.net/forum.php?mod=viewthread&tid ...

太感谢了,用那个方法可以获取到,终于解决了,再次表示感谢
作者: Landroid    时间: 2012-4-19 11:19
快乐的猪 发表于 2012-4-19 11:15
太感谢了,用那个方法可以获取到,终于解决了,再次表示感谢

不客气~可以把你的解决方法贴出来,也许会帮助到别的朋友哦~

作者: support    时间: 2012-4-19 12:45
Landroid 发表于 2012-4-17 17:37
sanshi说会在以后处理这种情况,给出示例。

有网友在http://bbs.extasp.net/forum.php?mod=viewthread&tid ...

恩。正在处理这个问题,有点棘手...
作者: 快乐的猪    时间: 2012-4-19 15:42
我是用的Request.Form[string.Format("Grid1_{0}$ddlJLScore", i)];方法获取的值,但是我现在想给grid中的那个DropDownList空间复制该如何实现呢
作者: sanshi    时间: 2012-4-21 16:46
重要更新:在Grid的TemplateField中使用Asp.net控件

作者: sanshi    时间: 2012-4-21 16:48
正在编码中,随后会放出几个例子
作者: sanshi    时间: 2012-4-21 22:57
已经完成下拉列表相关示例,ChangeSet:76628                                

-增加示例grid/grid_edit_dropdownlist.aspx和grid/grid_edit_dropdownlist2.aspx,演示如何在后台绑定Grid中下拉列表数据。

这样为Grid中的下拉列表绑定数据:
  1. protected void Grid1_RowDataBound(object sender, ExtAspNet.GridRowEventArgs e)
  2.         {
  3.             System.Web.UI.WebControls.DropDownList ddlGender = (System.Web.UI.WebControls.DropDownList)Grid1.Rows[e.RowIndex].FindControl("ddlGender");

  4.             List<string> genderList = new List<string>();
  5.             genderList.Add("男");
  6.             genderList.Add("女");
  7.             ddlGender.DataSource = genderList;
  8.             ddlGender.DataBind();


  9.             DataRowView row = e.DataItem as DataRowView;

  10.             int gender = Convert.ToInt32(row["Gender"]);
  11.             if (gender == 1)
  12.             {
  13.                 ddlGender.SelectedValue = "男";
  14.             }
  15.             else
  16.             {
  17.                 ddlGender.SelectedValue = "女";
  18.             }

  19.         }
复制代码

这样获取用户提交的下拉列表的值:

  1. protected void Button1_Click(object sender, EventArgs e)
  2.         {
  3.             StringBuilder sb = new StringBuilder();
  4.             sb.Append("<table style="width:350px;"><tr><th>编号</th><th>姓名</th><th>用户输入的性别</th></tr>");
  5.             for (int i = 0, count = Grid1.Rows.Count; i < count; i++)
  6.             {
  7.                 sb.Append("<tr>");
  8.                 object[] rowDataKeys = Grid1.DataKeys[i];
  9.                 sb.AppendFormat("<td>{0}</td>", rowDataKeys[0]);
  10.                 sb.AppendFormat("<td>{0}</td>", rowDataKeys[1]);

  11.                 GridRow row = Grid1.Rows[i];
  12.                 System.Web.UI.WebControls.DropDownList ddlGender = (System.Web.UI.WebControls.DropDownList)row.FindControl("ddlGender");
  13.                 sb.AppendFormat("<td>{0}</td>", ddlGender.SelectedValue);

  14.                 sb.Append("<tr>");
  15.             }

  16.             sb.Append("</table>");

  17.             labResult.Text = sb.ToString();

  18.         }
复制代码



作者: 快乐的猪    时间: 2012-4-23 14:03
sanshi 发表于 2012-4-21 22:57
已经完成下拉列表相关示例,ChangeSet:76628                                

-增加示例grid/grid_edit_ ...

非常敬佩sanshi的敬业精神,太感谢了




欢迎光临 FineUI 官方论坛 (https://fineui.com/bbs/) Powered by Discuz! X3.4