在Gridview中选中复选框获取元素值?

Posted

技术标签:

【中文标题】在Gridview中选中复选框获取元素值?【英文标题】:get element value on checkbox checked in Gridview? 【发布时间】:2018-06-15 15:18:23 【问题描述】:

我有一个带有 ItemTemplate(复选框和文本框)的 GridView

<asp:GridView ID="gvNonTimeCard" runat="server">
    <asp:TemplateField HeaderText="Delete?">
       <ItemTemplate>
           <asp:CheckBox ID="chkDelete" runat="server" onclick="return chkDelete_OnClick(this);"></asp:CheckBox>
       </ItemTemplate> 
    </asp:TemplateField>
    <asp:TemplateField HeaderText="Date" >
        <ItemTemplate>
            <asp:TextBox runat="server" ID="txtDate" CssClass="Width_2" format="Date" Text='<%# DataBinder.Eval(Container,  "DataItem.DateWorked") %>' Description="Date on row ">                                        
            </asp:TextBox>
        </ItemTemplate>
    </asp:TemplateField>
</asp:GridView>

我编写了一个 javascript 函数来查找单击复选框上的 texDate 值。但我没有看到它的返回控件 ID“gvNonTimeCard_ctl03_txtDate”得到任何值?

function chkDelete_OnClick(objCheckbox) 
 if (objCheckbox != null) 
     console.log("objCheckBox null");
     var val = document.getElementById(objCheckbox.id.replace("chkDelete", "txtDate")).id;       
 

【问题讨论】:

在你的代码中替换这一行 var val = document.getElementById(objCheckbox.id.replace("chkDelete", "txtDate")).value; 【参考方案1】:

在你的代码中替换这一行

var val = document.getElementById(objCheckbox.id.replace("chkDelete", "txtDate")).value;

【讨论】:

我还有一个问题。当我的网格超过 1 行时,下面的代码返回一个日期值。当我在网格中有 1 行时,“日期”返回为空值? foreach(gvNonEmployeeTimeCard.Rows 中的 GridViewRow 行) deleteRow = Methods.SafeConvertToBool(((CheckBox)row.FindControl("chkDelete")).Checked); date = Methods.SafeConvertToDate(((TextBox)row.FindControl("txtDate")).Text.Trim());

以上是关于在Gridview中选中复选框获取元素值?的主要内容,如果未能解决你的问题,请参考以下文章

如何从C#中获取ListView中选中某一行某一列的值

如何获取UIPickerView中选中的cell的值

在 Yii gridview 分页中保留复选框值

从GridView项中获取值

在winform中如何获取两个单选框中选中的那个值

计算gridview中选中的复选框