2009-10-01 131 views
4

当用户转到指定的页面时,我有一个DetailsView附加到SqlDataSource,并已在插入模式下进行设置。我基本上将它用作某些事件的注册页面。而不是让用户键入他们的“用户名”,我希望该字段基于已登录的用户自动填充。DetailsView上的默认值插入

有没有人有任何关于如何让User.Identity.Name成为出现在Page_load上的默认值,或者如何在DetailsViewInsertEventArgs上编写重写?当然,如果我完全不在基地,那么其他建议就会很好。

我在后面使用c#代码。

谢谢, 迈克

+0

一些代码将有助于我们理解你的问题好一点。 – Phaedrus 2009-10-01 00:46:49

回答

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(); 
      } 
     } 
    } 
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"); 
    } 

} 

希望我插入的代码正确

+0

这应该这样做,你正确插入代码。即使在绑定字段中,这也应该可以工作。 – 2009-10-05 00:54:27

0

文本框塔塔=(文本框)DetailsView1 .Rows [6] .Cells [1] .Controls [0]; tata.Text = User.Identity.Name;

这将chane boundfield。如果将绑定字段更改为templatefield,则此代码也可以工作:

TextBox txt1 =(TextBox)DetailsView1.FindControl(“UserName”); txt1.Text = User.Identity.Name.ToString();

0

不知道这是如何做到这一点,但如果你想使用会话,这是一个非常简单的修复。其实我只是自己研究这个。

如果你在Session中存储你的用户名,你可以从那里把它作为一个参数放到你的SQLDataSource中。

我所做的只是在标记视图的InsertParameter列表中添加SessionParameter。

在你的情况下,我会建议去SqlDataSourceFBReg控件的标记,并寻找InsertParameters的列表。

然后,添加一个asp:SessionParameter与NAME =“用户名”和SessionField =“任何会议的名称是”