【问题标题】:Find control in grid view control在网格视图控件中查找控件
【发布时间】:2014-07-12 13:13:29
【问题描述】:

我知道有很多关于此的问题和答案,但没有一个适合我

尝试通过后面代码中的函数填充此下拉列表:

此下拉列表用于图像名称,当用户选择一个并单击网格视图中的“更新”链接按钮时,我需要在图像名称中插入一个后缀(用于路径), 因此,如果用户从列表中选择图像名称,则更新按钮实际上会更新 fileName + 在路径开头插入,所以它将是

../images/gary.jpg

加里这个名字。

aspx 页面

 <asp:TemplateField>
                <EditItemTemplate>                      
                        <asp:DropDownList ID="ddlImages" runat="server">
                        <Items>
                            <asp:ListItem Text="Choose" Value="" />
                        </Items>
                    </asp:DropDownList>
                </EditItemTemplate>
                ...

后面的代码

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            DropDownList ddlImages = (e.Row.FindControl("ddlImages") as DropDownList);
            ShowImages(ddlImages);

        }
}

“ddlImages”为空,如何找到他?


设法找到这样的下拉列表:

if (e.Row.RowType == DataControlRowType.DataRow)
        {
            if ((e.Row.RowState & DataControlRowState.Edit) > 0)
            {
                DropDownList ddlImages = (DropDownList)e.Row.FindControl("ddlImages");
                ddlImages.DataSource = GetImages();
                ddlImages.DataBind();
            }
        }

现在我面临另一个问题,在 aspx 中我有一个“UpdateCommand”,它接受参数并尝试更新数据库。问题 - 它需要采用 dropDownList 选择的值,而是采用:“”我如何更改它以采用用户在 dropDownList 中选择的值

aspx 页面

    UpdateCommand="UPDATE [investigator] SET [name] = @name, [area] = @area, [country] = @country,     [picture] = @picture, [review] = @review WHERE [Id] = @Id">

 <UpdateParameters>
            <asp:Parameter Name="name" Type="String" />
            <asp:Parameter Name="area" Type="String" />
            <asp:Parameter Name="country" Type="String" />
            <asp:Parameter Name="picture" Type="String" />
            <asp:Parameter Name="review" Type="String" />
            <asp:Parameter Name="Id" Type="Int32" />
        </UpdateParameters>

意思-我必须改变

<asp:Parameter Name="picture" Type="String" />

下拉列表选择值。我怎样才能做到这一点?

【问题讨论】:

  • 您正在尝试获取 RowDataBoud 事件中的下拉列表。但是Dropdown列表在EditItemTemplate中,所以只能在行的编辑模式下获取Dropdown。
  • @Kiran Hegde,设法做到了。现在我面临另一个问题,在 aspx 中我有一个“UpdateCommand”,它接受参数并尝试更新数据库。问题 - 它需要采用 dropDownList 选择的值,而是采用:“” 我如何更改它以采用用户在 dropDownList 中选择的值
  • 能否用updatecommand显示数据源的aspx源代码?
  • @Kiran Hegde,更新了问题。
  • 如果它有效,你能检查答案吗?

标签: c# asp.net


【解决方案1】:

关于更新参数的问题,您应该使用 ControlParameter 而不是通用参数。尝试用以下替换下拉列表的参数定义 代码。

<asp:ControlParameter Name="picture" ControlID="ddlImages" 
    PropertyName="SelectedValue" Type="String" />

更新 作为替代,你可以做的是,

把参数改回

<asp:Parameter Name="picture" Type="String" />

将 RowUpdating 事件处理程序添加到 gridview 在 RowUpdating 命令中,根据所选值设置数据源参数,如下所示

protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
{

GridViewRow row = GridView1.Rows[e.RowIndex];
DropDownList ddlImages=  row.FindControl("ddlImages") as DropDownList;
SqlDataSource1.UpdateParameters["picture"].DefaultValue = ddlImages.SelectedValue;
}

【讨论】:

  • 我收到一个错误:“在 ControlParameter 'picture' 中找不到控件 'ddlImages'。”
  • 发现我必须使用美元字符($)来访问内部控件, ControlID="dvEmployee$ddlDept" ,但我不知道如何在我的代码中体现它。跨度>
  • 你能检查一下上面的答案吗
  • 我应该把它放在哪里?
  • GridViewRow 行 = GridView1.Rows[e.RowIndex]; -
猜你喜欢
  • 1970-01-01
  • 2010-12-30
  • 2011-09-21
  • 2011-11-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-31
  • 2011-05-11
相关资源
最近更新 更多