当用户转到指定页面时,我有一个附加到SqlDataSource的DetailsView,并且已经在插入模式下设置。我基本上将它用作某些事件的注册页面。我希望该字段根据已登录的用户自动填充,而不是让用户输入“UserName”。
有没有人建议如何让User.Identity.Name成为Page_load上显示的默认值,或者如何在DetailsViewInsertEventArgs上编码覆盖?当然,如果我完全偏离基础,那么其他建议就会很棒。
我正在使用c#代码。
谢谢, 麦克
答案 0 :(得分:3)
你可以这样做:
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
DetailsView1.DefaultMode = DetailsViewMode.Insert;
if (DetailsView1.FindControl("TextBox1") != null)
{
TextBox txt1 = (TextBox)DetailsView1.FindControl("TextBox1");
txt1.Text = User.Identity.Name.ToString();
}
}
}
答案 1 :(得分:0)
啊,谢谢里卡多。这是有道理的,但我仍然无法让它工作。我想我忘了提到控件是在一个边界,如果这有所不同。
这是主页代码:
<div align="center">
<asp:DetailsView ID="DetailsView1" runat="server" AutoGenerateRows="False"
DataKeyNames="RegistrationID" DataSourceID="SqlDataSourceFBReg"
DefaultMode="Insert" Height="50px"
Width="55%" OnItemInserted="NFLElim" >
<Fields>
<asp:BoundField DataField="RegistrationID" HeaderText="RegistrationID"
InsertVisible="False" ReadOnly="True" SortExpression="RegistrationID" />
<asp:BoundField DataField="UserName" HeaderText="One Season User Name"
SortExpression="UserName" />
<asp:BoundField DataField="Email" HeaderText="Email" SortExpression="Email" />...
以下是设置背后的代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
public partial class NFLElim_Reg : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
DetailsView1.DefaultMode = DetailsViewMode.Insert;
if (DetailsView1.FindControl("UserName") != null)
{
TextBox txt1 = (TextBox)DetailsView1.FindControl("UserName");
txt1.Text = User.Identity.Name.ToString();
}
}
}
protected void NFLElim(object sender, DetailsViewInsertedEventArgs e)
{
Response.Redirect("Account.aspx");
}
}
希望我正确插入代码
答案 2 :(得分:0)
TextBox tata =(TextBox)DetailsView1.Rows [6] .Cells [1] .Controls [0]; tata.Text = User.Identity.Name;
这将是chane boundfield。如果将boundfield更改为templatefield,则此代码也可以起作用:
TextBox txt1 =(TextBox)DetailsView1.FindControl(“UserName”); txt1.Text = User.Identity.Name.ToString();
答案 3 :(得分:0)
不确定这是否是您想要的方式,但如果您想使用Session,这是一个非常简单的修复方法。我其实只是在研究这个问题。
如果您将用户名存储在Session中,则可以将其作为参数从中拉到SQLDataSource中。
我所做的只是在标记视图中的InsertParameter列表中添加一个SessionParameter。
在您的情况下,我建议转到SqlDataSourceFBReg控件的标记,并查找InsertParameters列表。
然后,添加一个名为=&#34; UserName&#34;的asp:SessionParameter。和SessionField =&#34;无论会话名称是什么&#34;