Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 双击datagrid中的链接按钮,它将变成一个下拉列表_C#_Asp.net - Fatal编程技术网

C# 双击datagrid中的链接按钮,它将变成一个下拉列表

C# 双击datagrid中的链接按钮,它将变成一个下拉列表,c#,asp.net,C#,Asp.net,我有一个Datagrid,它看起来像 <asp:GridView ID="dgTask" runat="server" Width="100%" AutoGenerateColumns="False"> <Columns> <asp:BoundField DataField="TaskID" HeaderText="TaskID" ItemStyle-Width="1%" /> <asp:BoundField Da

我有一个Datagrid,它看起来像

<asp:GridView ID="dgTask" runat="server" Width="100%" AutoGenerateColumns="False">
    <Columns>
        <asp:BoundField DataField="TaskID" HeaderText="TaskID" ItemStyle-Width="1%" />
        <asp:BoundField DataField="TaskName" HeaderText="Task Name" ItemStyle-HorizontalAlign="left"
            ItemStyle-Width="10%" />
        <asp:BoundField DataField="PriorityName" HeaderText="Priority" ItemStyle-HorizontalAlign="center"
            ItemStyle-Width="10%" />
        <asp:BoundField DataField="StatusName" HeaderText="Status" ItemStyle-HorizontalAlign="center"
            ItemStyle-Width="10%" />
        <asp:TemplateField HeaderText="Edit Task" ItemStyle-Width="10%">
            <ItemTemplate>
                <asp:LinkButton ID="lnkBtnEdit" runat="Server" Text="Edit" />
            </ItemTemplate>
        </asp:TemplateField>
    </Columns>
</asp:GridView>

可以看出,网格中有一个链接按钮控件。我们的要求是,当用户双击这个链接按钮,然后 该行应更改为下拉列表

如何做到这一点?谷歌搜索帮助不大

请帮忙

网格中的数据填充

public partial class Default2 : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        var records = GetData();
        dgTask.DataSource = records;
        dgTask.DataBind();
    }

    private List<TaskEntity> GetData()
    {
        List<TaskEntity> lstTaskEntity = new List<TaskEntity>();
        Enumerable.Range(1, 10)
            .ToList()
            .ForEach(
                        i => lstTaskEntity.Add(new TaskEntity
                        {
                            TaskID = i
                         ,
                            TaskName = string.Concat("TaskName", i)
                         ,
                            PriorityName = string.Concat("PriorityName", i)
                         ,
                            StatusName = string.Concat("StatusName", i)
                        }));
        return lstTaskEntity;
    }
}

public class TaskEntity
{
    public int TaskID { get; set; }
    public string TaskName { get; set; }  
    public string PriorityName { get; set; }  
    public string StatusName { get; set; }   
}
protected void dgTask_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            LinkButton btn = (LinkButton)e.Row.Cells[4].FindControl("lnkBtnEdit");

            DropDownList ddl = (DropDownList)e.Row.Cells[4].FindControl("ddlDropDown");
            ddl.DataSource = //give datasource;
            ddl.DataBind();

            ddl.Attributes.Add("style", "display:none");
            btn.Attributes.Add("onclick", "return Test('" + ddl.ClientID + "," + btn.ClientID + "');");
        }
    }
public部分类Default2:System.Web.UI.Page
{
受保护的无效页面加载(对象发送方、事件参数e)
{
var records=GetData();
dgTask.DataSource=记录;
dgTask.DataBind();
}
私有列表GetData()
{
List lstTaskEntity=新列表();
可枚举范围(1,10)
托利斯先生()
弗雷奇先生(
i=>lstTaskEntity.Add(新建TaskEntity
{
TaskID=i
,
TaskName=string.Concat(“TaskName”,i)
,
PriorityName=string.Concat(“PriorityName”,i)
,
StatusName=string.Concat(“StatusName”,i)
}));
返回任务实体;
}
}
公共类任务实体
{
public int TaskID{get;set;}
公共字符串TaskName{get;set;}
公共字符串优先级名称{get;set;}
公共字符串StatusName{get;set;}
}

提前感谢

请参考以下链接,您可以使用TemplateField和EditItem模板来实现此目的 试试这个:

为此,您必须向itemtemplate添加LinkButton和DropDownList,并控制两者的可见性

   protected void LinkButton1_Click(object sender, EventArgs e)
    {
        LinkButton b = (LinkButton)sender;
        b.Visible = false;
        GridViewRow r = (GridViewRow)b.NamingContainer;
        ((DropDownList)(GridView1.Rows[r.RowIndex].Cells[0].FindControl("DropDownList1"))).Visible = true;
    }

单元格[0]------------->此处更改控件所在的单元格编号

我不是向下投票人,但在双击此链接按钮之前我一直与您在一起,但这是我们需要执行的要求。由于我无法继续,因此我寻求帮助
   protected void LinkButton1_Click(object sender, EventArgs e)
    {
        LinkButton b = (LinkButton)sender;
        b.Visible = false;
        GridViewRow r = (GridViewRow)b.NamingContainer;
        ((DropDownList)(GridView1.Rows[r.RowIndex].Cells[0].FindControl("DropDownList1"))).Visible = true;
    }