asp.net 用户控件属性无效

编程的西红柿2 2009-07-17 09:20:42
我用的是vs2008 .net 3.5

private string mID = "";

protected void GridView1_SelectedIndexChanged(object sender, EventArgs e)
{
GridViewRow gv = GridView1.SelectedRow;
mID = gv.Cells[DB.GetGridViewColumnIndex(GridView1, "游戏代码")].Text.ToString().Trim();
mID = mID.Trim();

mID = "aaaa";
Response.Write(mID);


}

public string matchID
{
get { return mID; }
set { mID = value; }
}

//注意:Response.Write(mID); 可以输出,证明变量mID得到了我想要的值


在 default.aspx中调用

TextBox1.Text = matchGridview1.matchID;

用这句话无法获得变量的值,只能得到长度为0的空字符串

如果前面加上这样的话: matchGridview1.matchID = "abc";
TextBox1.Text 获得的值就是 "abc";
说明属性功能使用正常。
现在的问题就是得不到用户控件中的值,请大家当忙解决???????????????
我记得这种方法在vs2005中用过,是可以的。不知道为什么在vs2008 .net 3.5 中不好使。


...全文
90 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
结贴总结:综合大家的思路,结合编程的难易程度,我认为最佳的解决方法是利用一个 HiddenField 控件代替原来的变量就可以了。很好用。再次向大家表示感谢。
  • 打赏
  • 举报
回复
感谢楼上的。我基本明白了。但是请大家看看msdn中的例子,又如何理解呢。
太晚了,看的不是太细,不知道它是不是也获得了实例。

<% @ Control Language="C#" ClassName="Spinner" %>

<script runat="server">
private int m_minValue;
private int m_maxValue = 100;
private int m_currentNumber = 0;
public int MinValue
{
get
{
return m_minValue;
}
set
{
if(value >= this.MaxValue)
{
throw new Exception("MinValue must be less than MaxValue.");
}
else
{
m_minValue = value;
}
}
}

public int MaxValue
{
get
{
return m_maxValue;
}
set
{
if(value <= this.MinValue)
{
throw new
Exception("MaxValue must be greater than MinValue.");
}
else
{
m_maxValue = value;
}
}
}

public int CurrentNumber
{
get
{
return m_currentNumber;
}
}

protected void Page_Load(Object sender, EventArgs e)
{
if(IsPostBack)
{
m_currentNumber =
Int16.Parse(ViewState["currentNumber"].ToString());
}
else
{
m_currentNumber = this.MinValue;
}
DisplayNumber();
}

protected void DisplayNumber()
{
textNumber.Text = this.CurrentNumber.ToString();
ViewState["currentNumber"] = this.CurrentNumber.ToString();
}

protected void buttonUp_Click(Object sender, EventArgs e)
{
if(m_currentNumber == this.MaxValue)
{
m_currentNumber = this.MinValue;
}
else
{
m_currentNumber += 1;
}
DisplayNumber();
}

protected void buttonDown_Click(Object sender, EventArgs e)
{
if(m_currentNumber == this.MinValue)
{
m_currentNumber = this.MaxValue;
}
else
{
m_currentNumber -= 1;
}
DisplayNumber();
}
</script>
<asp:TextBox ID="textNumber" runat="server"
ReadOnly="True" Width="32px" Enabled="False" />
<asp:Button Font-Bold="True" ID="buttonUp" runat="server"
Text="^" OnClick="buttonUp_Click" />
<asp:Button Font-Bold="True" ID="buttonDown" runat="server"
Text="v" OnClick="buttonDown_Click" />
wuyq11 2009-07-17
  • 打赏
  • 举报
回复
matchGridview1类要实例化设置属性,再取值
或通过server.transfer获取属性值
  • 打赏
  • 举报
回复
问题还没找到,但发现确实如 wangfuchong 所说,一刷新就不行了。
绿绦 2009-07-17
  • 打赏
  • 举报
回复
GridView1.SelectedRow.Cells[第几列].Text
如第一列GridView1.SelectedRow.Cells[0].Text


绿绦工作室http://www.lvtaostudio.com
绿绦 2009-07-17
  • 打赏
  • 举报
回复
mID = gv.Cells[第几列].Text.ToString().Trim();


绿绦工作室http://www.lvtaostudio.com
IHandler 2009-07-17
  • 打赏
  • 举报
回复
直接使用自动属性就行了,还用什么似有变量
怫悰 2009-07-17
  • 打赏
  • 举报
回复
冒泡帮顶接分

要SelectedIndexChanged后才赋值了吧?页面重新刷新了有无影响?有无缓存之类的影响?

62,072

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧