首页 新闻 搜索 专区 学院

detailsview新增时使用DropDownList出错

0
悬赏园豆:10 [已解决问题] 解决于 2012-05-28 09:44

aspx代码如下:
  <EmptyDataTemplate>
  <asp:DetailsView runat="server" DataSource 
  DefaultMode="Insert" Height="50px" Width="125px" 
  oniteminserted="DetailsView1_ItemInserted" AutoGenerateRows="False" 
  DataKeyNames="id">
  <FieldHeaderStyle Wrap="False" />
  <Fields>
  <asp:BoundField DataField="chuliren" HeaderText="处理人" 
  SortExpression="chuliren" />
  <asp:BoundField DataField="shenqingren" HeaderText="申请人" 
  SortExpression="shenqingren" />
  <asp:BoundField DataField="gongsi" HeaderText="公司" 
  SortExpression="gongsi" />
  <asp:TemplateField HeaderText="部门" SortExpression="bumen">
  <EditItemTemplate>
  <asp:DropDownList runat="server" 
  DataSource DataTextField="bumen" 
  DataValueField="bumen" AutoPostBack="True" >
  </asp:DropDownList>
  <asp:SqlDataSource runat="server" 
  ConnectionString="<%$ ConnectionStrings:dngzConnectionString %>" 
  SelectCommand="SELECT * FROM [jiagou]"></asp:SqlDataSource>
  </EditItemTemplate>
  </asp:TemplateField>
  </Fields>
  <HeaderStyle Wrap="True" />
  </asp:DetailsView>
  </EmptyDataTemplate>

aspx.cs代码如下:
protected void DetailsView1_ItemInserting(object sender, DetailsViewInsertEventArgs e) 

string str = ((DropDownList)DetailsView1.Rows[3].Cells[1].FindControl("DropDownList1")).SelectedItem.Text;

e.Values.Add("type", str); 



运行的时候,显示string str = ((DropDownList)DetailsView1.Rows[3].Cells[1].FindControl("DropDownList1")).SelectedItem.Text;有错误,DetalisView1不存在上下文中,这是为什么呢?
这个是在gridview之内的,还有是在UpdatePanel之内,还有是在ContentPlaceHolder之内,不知道是不是受这些影响?
如何修改?

xzf_fancy的主页 xzf_fancy | 初学一级 | 园豆:28
提问于:2012-05-18 14:12
< >
分享
最佳答案
0

DetailsView1是在一个数据模板EmptyDataTemplate中,凡是在数据模板中的对象都需要通过FindControl来查找。

收获园豆:10
无之无 | 大侠五级 |园豆:5085 | 2012-05-18 14:22

那要用两个FindControl应该怎么写呢

xzf_fancy | 园豆:28 (初学一级) | 2012-05-18 14:28

@xzf_fancy: 我也没用过DETAILSVIEW,说不上,不过,你既然对DETAILSVIEW设置了ItemInserting事件,那么在事件处理里,这个SENDER对象应该就是这个DETAILSVIEW(或者是它下面的一个ITEM),而事件参数e里也会有一个属性Item指向当前正在触发事件的Item。

或者把代码修改成:

protected void DetailsView1_ItemInserting(object sender, DetailsViewInsertEventArgs e)  
{  
string str = (e.Item.FindControl("DropDownList1")).SelectedItem.Text;

e.Values.Add("type", str);  
} 

然后再在这个基础上你小调以下,修正其中的错误后使用。

无之无 | 园豆:5085 (大侠五级) | 2012-05-18 14:39
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册