C# 双击datagrid中的链接按钮,它将变成一个下拉列表
我有一个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
<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;
}